Java 为什么不重置doAnswer()存根?

Java 为什么不重置doAnswer()存根?,java,mockito,Java,Mockito,我有两个测试调用相同的代码,但检查不同的东西。 第一种方法使用doAnswer()存根方法调用并将参数放入检查程序。 第二个不需要它 但是当我运行测试时,第二个测试失败了,因为第一个测试中注入的检查器失败了。如果我只运行第二个测试,它就会通过 那么,我是否应该在我的setUp()方法中用空检查器重置doAnswer()存根?为什么会这样 这是我在第一次测试中使用的检查器: final Map<String, String> expectedParams = new HashM

我有两个测试调用相同的代码,但检查不同的东西。 第一种方法使用
doAnswer()
存根方法调用并将参数放入检查程序。 第二个不需要它

但是当我运行测试时,第二个测试失败了,因为第一个测试中注入的检查器失败了。如果我只运行第二个测试,它就会通过

那么,我是否应该在我的
setUp()
方法中用空检查器重置
doAnswer()
存根?为什么会这样

这是我在第一次测试中使用的检查器:

    final Map<String, String> expectedParams = new HashMap<>();
    expectedParams.put("param1", "A");
    doAnswer(new Answer() {
        public Object answer(InvocationOnMock invocation) {
            Object[] args = invocation.getArguments();
            String name = (String) args[0];
            Assert.assertEquals("event1", name);
            Map<String, String> params = (Map<String, String>) args[1];
            Assert.assertEquals(expectedParams, params);
            return null;
        }}).when(mMyMockedObject).myTestedMethod(anyString(), anyMap());
在第二个测试中,我从不调用doAnswer(),但我的检查器被调用,我不知道为什么:(


添加整个测试

@RunWith(LocalRobolectricTestRunner.class)
@Config(manifest = Config.NONE)
public class MyTest {
    private static final String MAIN = "main";

    @Mock
    MyMockedClass mMyMockedObject;

    @Before
    public void setUp() throws Exception {
        System.out.println("setUp()");
        MockitoAnnotations.initMocks(this);

        // this will connect MAIN with mMyMockedObject
        SomClassICantShareNda.someMethodNda(MAIN, mMyMockedObject);        
    }
嘿,这就是我理解这是我的错,不是莫基托。 在这里,我添加了新的mMyMockedObject,但忘记了删除mMyMockedObject的旧实例(在SomClassICantShareNda中,在静态集合中)。因此,每次测试后,都会创建新的mMyMockedObject并将其添加到集合中。

对不起,这是我的错。
代码复制了许多模拟对象,将它们缓存在一个静态集合中,并且没有在setUp()中重置它。

您可以提供整个测试吗?谢谢,这有助于我了解发生了什么。
@RunWith(LocalRobolectricTestRunner.class)
@Config(manifest = Config.NONE)
public class MyTest {
    private static final String MAIN = "main";

    @Mock
    MyMockedClass mMyMockedObject;

    @Before
    public void setUp() throws Exception {
        System.out.println("setUp()");
        MockitoAnnotations.initMocks(this);

        // this will connect MAIN with mMyMockedObject
        SomClassICantShareNda.someMethodNda(MAIN, mMyMockedObject);        
    }