【发布时间】:2018-12-24 12:54:40
【问题描述】:
我需要对一个函数进行单元测试,该函数对另一个 void 方法进行内部调用。
Class TestClass {
public void testMethod() {
someOtherClass.testMethod(); // This is void method
}
}
我需要模拟someOtherClass.testMethod(),然后使用断言验证testMethod 或TestClass。
对不起,如果我的帖子令人困惑。让我说得更清楚。我的意图是——
public void testMethodTest() {
TestClass tC = new TestClass(); SomeOtherClass obj = EasyMock.createNiceMock(SomeOtherClass.class);
tC.set(obj);
obj.testMethod();
EasyMock.expectLastCall().andAnswer(new IAnswer() {
public Object answer() { // return the value to be returned by the method (null for void)
return null;
}
});
EasyMock.replay(obj);
tC.testMethod(); // How to verify this using assert.
}
【问题讨论】:
-
someOtherClass与被测类/方法的关系是什么? -
您想验证
someOtherClass.testMethod()是否在调用testMethod()时被调用? -
someOtherClass 是 SomeOtherClass.java 的实例。 @Vicky - 是的。我想模拟 someOtherClass.testMethod() 以返回某种类型,然后尽可能调用 TestClass 的 testMethod 以匹配先前的返回类型
-
你说你想模拟 someOtherClass.testMethod() 来返回某种类型,但它的返回类型是 void 所以这是不可能的。我无法理解您为什么要这样做。用于测试
testMethod(),验证someOtherClass.testMethod -
你说你想模拟 someOtherClass.testMethod() 来返回某种类型,但它的返回类型是 void 所以这是不可能的。我无法理解您为什么要这样做。对于测试
testMethod(),验证someOtherClass.testMethod被调用一次就足够了。但要做到这一点 someOtherClass 必须可注入。该对象是如何创建的。 ?传递给 TestClass 构造函数或通过 setter 方法,还是该方法自己创建此对象?
标签: java unit-testing easymock