【发布时间】:2018-12-08 18:46:43
【问题描述】:
使用jMock,我如何测试某个类的所有方法在调用另一个类中的方法时没有被调用?
例如,如果我有 A 类和 B 类:
class A {
void x() {
}
void y() {
}
void z() {
}
}
class B {
A a;
void doNothing() {
}
}
如何测试B#doNothing() 的调用不会调用A 类的任何 方法?
我知道使用 jMock 2 和 JUnit 3,我可以做到:
public class BTest extends MockObjectTestCase {
@Test
public void testDoNothing() {
B b = new B();
A a = b.getA();
checking(new Expectations() {{
never(a).x();
never(a).y();
never(a).z();
}});
b.doNothing();
}
}
但是,如果方法不止 3 种,比如 30 种呢?我将如何测试它?
【问题讨论】:
-
使用反射获取A中的所有方法,然后使用
never断言 -
@RishikeshDhokare 你能证明你的意思吗?
-
Jmock 3?你从哪里得到Jmock 3? jmock.org 将最新版本列为 2.6.1
-
@DanielMartin 抱歉,我的意思是 jMock 2 和 JUnit 3。