繁体   English   中英

依赖验证函数调用mockito

[英]Dependency verify functions call mockito

我想创建单元测试来测试包含另一个对象的类。 我已经为第二个对象创建了一个模拟器。

当我测试我的第一个类的方法时,我想验证是否调用了第二个对象的函数。 为此,我使用函数verify(mock).myfunction();

我的问题是我的第一个类的几个函数可以调用我的对象2的相同功能。

当我编写测试类时,我按函数编写测试函数,但似乎在测试方法开始时没有重置“时间”。

我不知道我是否清楚,因此,一个例子:

public class Main  {
    public Object o = createObject();

    public void function1(){
        o.function();
    }

    public void function2(){
        o.function();
    }


    public Object createObject() {
        return new Object() ;
    }


public class MainTest {
    private static Main main;

    @BeforeClass
    public static void setUp() throws Exception {
        final Object mockO = mock(Object.class);

        main = new Main() {
            @Override
            public Object createObject() {
                return mockO;
            }
            }; 
    }

    @Test
    public void testfunction1(){
        verify(main.world[0], never()).function();
        main.function1();
        verify(main.world[0]).function();
    }

    @Test
    public void testfunction2(){
        verify(main.world[0], never()).function();
        main.function2();
        verify(main.world[0]).function();
    }

如果我测试testfunction1()testfunction2()被忽略了,那就行了。

如果我测试testfunction2()testfunction1()被忽略,它就可以了。

但如果执行了两个测试,我有一个错误:

org.mockito.exceptions.verification.NeverWantedButInvoked:
Object.function();
Never wanted here : 
-> at test.MainTest.testfunction1
but invoked here :
at source.Main.function2

我如何独立测试这两个功能?

setUp()方法重命名为其他方法,使其成为非静态方法,并将其@Before而不是@BeforeClass

private Main main;

@Before
public void initMain()
{
    // what you already do
}

@BeforeClass方法在类中的所有测试之前运行一次,而@Before方法在每次测试之前运行一次。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM