gpt4 book ai didi

java - 如何测试一个类的所有方法都没有在jMock中被调用?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:22:52 24 4
gpt4 key购买 nike

使用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com