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

Java 如何测试一个类的所有方法都没有在jMock中调用?,java,jmock,Java,Jmock,使用jMock,我如何测试某个类的所有方法在调用另一个类中的方法时都没有被调用 例如,如果我有classA和classB: class A { void x() { } void y() { } void z() { } } class B { A a; void doNothing() { } } 如何测试调用B#doNothing()不会调用类A的任何方法 我知道有了JMock2和JUnit3,我可以: public

使用jMock,我如何测试某个类的所有方法在调用另一个类中的方法时都没有被调用

例如,如果我有class
A
和class
B

class A {
    void x() {
    }
    void y() {
    }
    void z() {
    }
}

class B {
    A a;
    void doNothing() {
    }
}
如何测试调用
B#doNothing()
不会调用类
A
的任何方法

我知道有了JMock2和JUnit3,我可以:

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();
    }
}

使用反射获取A中的所有方法,然后使用
never
来assert@RishikeshDhokare你能演示一下你的意思吗?Jmock 3?你从哪里得到Jmock 3?org将最新版本列为2.6。1@DanielMartin对不起,我指的是JUnit3的JMock2。