领测软件测试网
%W7~oM
P$Ec
软件测试技术网.Ja6p$Ao@5A
:t0]tsP2U(]g软件测试技术网:i!ID}d}s
图 1. Action 类的输出耦合
4|Wa*g!Ol
t%xt3sm
5S4Mq/zK:x?
(h_A5zK2]n4X但是,就像在图 1 中可以看到的,在试图隔离 ChangePasswordAction
类并检验 execute()
方法时,该类给出了一些有代表性的挑战。为了有效地测试 execute()
方法,必须处理三层耦合。首先,到 Struts 自身的耦合;其次,Servlet API 代表一个障碍;最后,到业务对象包的耦合,进一步检查业务对象包,还会有数据访问层使用 Hibernate 和 Spring。
Z0x
gt2E:a
|
每种情况一个 mock?软件测试技术网0zA Fe
K
x^%N n aeHV
c即使在我编写本文时,我还可以听到开发人员的嘲笑者 认为我的测试问题通过明智地使用 mock 对象就能轻易解决。可以 用 mock 对象创建一级隔离,它会形成更容易的测试;但是,我要说的是,把目标对象通过 mock 排除所需要的付出级别,比起承认隔离测试困难所需要的付出,要多得多。在这种情况下,我会采用在更高层次上的测试,这级测试有时叫做集成测试。 ;FzI@ PZ9_:d | |
软件测试技术网
H.nnV3dDYl对于更高的复杂性,请注意 清单 1中的代码如何把 aForm
参数转换成 ChangePasswordForm
对象,它是 Struts ActionForm
类型。这些 JavaBeans 有一个 validate
方法,这个方法由 Struts 在调用 Action
类的 execute()
方法之前调用。
b