Junit 不同测试方法上的InvalidUseofMatchers异常

Junit 不同测试方法上的InvalidUseofMatchers异常,junit,mockito,spring-test,Junit,Mockito,Spring Test,我在一个与使用Matchers的测试不同的测试中遇到InvalidUseOfMatchers异常 以下两个测试单独运行良好,但同时运行时,在第一个测试成功通过后,第二个测试失败,并抛出指向第一个测试的InvalidUseofMatcherException @Test(预期=InputException.class) public void应通过Exception whenInputNull()进行{ calculator.calculateA(any(),any(),any(),eq(null

我在一个与使用Matchers的测试不同的测试中遇到InvalidUseOfMatchers异常

以下两个测试单独运行良好,但同时运行时,在第一个测试成功通过后,第二个测试失败,并抛出指向第一个测试的InvalidUseofMatcherException

@Test(预期=InputException.class)
public void应通过Exception whenInputNull()进行{
calculator.calculateA(any(),any(),any(),eq(null));
}

@测试
公共void testCalculateB(){
assertTrue(BigDecimal.valueOf(8000).compareTo(calculator.calculateB(12))=0;
}

这是堆栈跟踪中的异常
org.mockito.exceptions.misusing.InvalidUseOfMatchersException:
此处检测到错位或误用的参数匹配器:

TestClass.在输入null时应通过异常

根据例外情况,第一次测试应该失败,但它的通过和第二次测试是失败的。单独而言,这两项测试都成功通过

calculator.calculateA(any(), any(), any(), eq(null));
这不是Matchers的有效用法。Mockito仅在与
when
verify
一起使用时使用
any
eq
,作为匹配调用的一种手段,告诉Mockito返回什么或应该记录什么调用。您需要使用特定的值调用
calculateA
,例如
calculator.calculateA(1,2,3,null)

Mockito匹配器,所以Mockito可以抛出异常的唯一时间是下次与Mockito交互时。这可能是另一种方法,但您可以通过使用MockitoRule、MockitoJUnitRunner或通过在
方法之后添加对的调用来帮助确保这些方法是本地的:

@After public void validateMockito() {
  Mockito.validateMockitoUsage();
}

谢谢你的快速回复!