使用 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 种呢?我将如何测试它?
最佳答案
首先,我相信这实际上会符合您的要求:
public class BTest extends MockObjectTestCase {
@Test
public void testDoNothing() {
B b = new B();
A a = b.getA();
checking(new Expectations() {{
never(a);
}});
b.doNothing();
}
}
但是,如果这不起作用,这应该:
import org.hamcrest.Matchers;
// ...
public class BTest extends MockObjectTestCase {
@Test
public void testDoNothing() {
B b = new B();
A a = b.getA();
checking(new Expectations() {{
exactly(0).of(Matchers.sameInstance(a));
}});
b.doNothing();
}
}
关于java - 如何测试一个类的所有方法都没有在jMock中被调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51103999/