多次调用mock后Hamcrests NoSuchMethodError

时间:2017-09-06 11:53:03

标签: java unit-testing junit mockito hamcrest

org.hamcrest.Matcher.describeMismatch我遇到了NoSuchMethodError的常见问题。这很奇怪,因为当我尝试在一次测试中模拟一个带有多个参数的方法时,它才会抛出。我想我的描述可能不清楚,所以我会通过例子来说明。这是我的模仿:

  private void mockParameterListOfTerminalGroup(TerminalGroup terminalGroup, List<Parameter> parameters) {
    Matcher<ParameterFilter> matcher = Matchers.<ParameterFilter> hasProperty("bean", hasProperty("scopeId", equalTo(terminalGroup.getId())));
    when(parameterDAO.getByExample(argThat(matcher))).thenReturn(parameters);
}

当它在测试中被调用一次时,它工作得很清楚,但是当我尝试为不同的参数多次模拟它时会抛出NoSuchMethodError。

依赖项顺序正确:

 <dependency>
            <groupId>org.hamcrest</groupId>
            <artifactId>hamcrest-core</artifactId>
            <version>1.3</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.hamcrest</groupId>
            <artifactId>hamcrest-library</artifactId>
            <version>1.3</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-core</artifactId>
            <version>1.10.19</version>
            <scope>test</scope>
             <exclusions>
            <exclusion>
                <artifactId>hamcrest-core</artifactId>
                <groupId>org.hamcrest</groupId>
             </exclusion>
        </exclusions>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>

有趣的是,当我使用测试构建整个项目时,此测试通过,但是当我将其作为单个junit测试运行时,它会失败。

0 个答案:

没有答案