当相同参数产生不同结果时会产生Mockito吗?

时间:2019-04-05 11:46:50

标签: java junit mockito

我有一个具有builder功能的build()类,我正在为此提供服务。

我为构建器提供了一个测试类,该类具有两种方法

是否可以使用相同的参数两次测试相同的参数,但是返回不同的值?

@Before
public void initTest() {
    MockitoAnnotations.initMocks(this);
}

@Test
private void test1{
    Mockito.when(defaultBuilder.build(service)).thenReturn(createObject());
}

@Test
private void test2(){  
    Mockito.when(defaultBuilder.build(service)).thenReturn(createDifferentObject());
}   

问题是即使我期望createObject(),我还是从第二次测试中得到了createDifferentObject()对象。

2 个答案:

答案 0 :(得分:2)

您可以在设置第二个值之前重设模拟:

https://static.javadoc.io/org.mockito/mockito-core/2.25.1/org/mockito/Mockito.html#resetting_mocks

但是,它被认为是测试概念不佳的标志。

答案 1 :(得分:1)

    public class Test {

    private MyObject myobject;
    private MyObject myDifferentObject;

    @Before
    public void initTest() {
        MockitoAnnotations.initMocks(this);
    myobject=createObject();
    myDifferentObject=createDifferentObject();
    }

    @Test
    private void test1{
        Mockito.when(defaultBuilder.build(service)).thenReturn(myobject);
    }

    @Test
    private void test2(){  
        Mockito.when(defaultBuilder.build(service)).thenReturn(myDifferentObject);
    }     

    }

//should work.