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

标签 java jmock

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

相关文章:

java - getClass() 是如何在 java 中实现的?

java - 如何对扩展/继承第 3 方类的类进行单元测试

java - 在 jMock 中捕获方法参数以传递给 stub 实现

java - 如何用 Java 编写测试来检查对象是否正在 JMock 或 JUnit 中使用?

java - 无法解析项目org.deeplearning4j:dl4j-examples:jar:1.0.0-beta6 Java的依赖项

java - 移除 JInternalFrame 默认标题栏

java - JWrapper "unpack200.exe not found"

java - 嵌入式 OSGi 或应用程序包

java - 对象的 Hamcrest 匹配器...参数

java - 是否有任何工具使用 hamcrest Factory 注释?