例如,假设我有一个像这样的基本POJO。
public class Stuff {
private OtherStuff otherStuff;
...
public void RunOtherStuff() {
otherStuff.run();
}
}
你究竟如何测试RunOtherStuff调用otherStuff.run?
我现在正在使用TestNG作为我的基础测试框架,我完全可以使用任何允许我测试它的Java框架,类似于在Rails和Ruby中使用rspec等。
答案 0 :(得分:0)
您要为otherStuff
创建一个setter,在致电RunOtherStuff()
之前,您需要致电setOtherStuff(myFake)
public class Stuff {
private OtherStuff otherStuff;
public void setOtherStuff(OtherStuff otherStuff) {
this.otherStuff = otherStuff;
}
...
public void RunOtherStuff() {
otherStuff.run();
}
}
然后您的测试可以这样写:
private Stuff stuff;
private boolean runWasCalled;
public void setUp() {
stuff = new Stuff();
stuff.setOtherStuff(new OtherStuff() {
public void run() {
runWasCalled = true;
}
});
}
public void testThatOtherStuffRunMethodIsCalled() {
stuff.RunOtherStuff();
assertTrue(runWasCalled);
}
答案 1 :(得分:0)
写一个MockOtherStuff
,它基本上是OtherStuff的子类。覆盖run()
方法并说出System.out.println('Run is called');
现在,在OtherStuff
课程中设置一个Stuff
的setter并传递你的模型。
修改强>
要断言,你可能有一个布尔变量说runWasCalled(默认为false)并在MocOtherStuff.run()