【问题标题】:Can't change Mockito version in POM of springboot project无法在 springboot 项目的 POM 中更改 Mockito 版本
【发布时间】:2016-08-20 15:09:06
【问题描述】:

我对

感兴趣

35. Custom verification failure message (Since 2.0.0)

但不知何故,我无法在我的 Maven 项目中使用它。

POM:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>test</groupId>
    <artifactId>Mockito</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <version>1.4.0.RELEASE</version>
            <exclusions>
                <!-- potrzebujemy nowszej wersji mockito -->
                <exclusion>
                    <groupId>org.mockito</groupId>
                    <artifactId>mockito-core</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-all</artifactId>
            <version>2.0.2-beta</version>
        </dependency>

        <dependency>
            <groupId>javax.inject</groupId>
            <artifactId>javax.inject</artifactId>
            <version>1</version>
        </dependency>

    </dependencies>
</project>

无法编译的代码:

@Test
public void testCustomVerificationFailureMessage(){
    List mock = mock(List.class);

    BDDMockito.given(mock.get(0)).willReturn("string");

    mock.get(0);

    verify(mock, times(1).description("metoda powinna wykonać się tylko jeden raz")).get(0);
}

我错过了什么吗?似乎旧版本仍在运行。

解决方案:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>test</groupId>
    <artifactId>Mockito</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <version>1.4.0.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-core</artifactId>
            <version>2.0.106-beta</version>
        </dependency>

        <dependency>
            <groupId>javax.inject</groupId>
            <artifactId>javax.inject</artifactId>
            <version>1</version>
        </dependency>

    </dependencies>
</project>

【问题讨论】:

  • 键入代码并编译时会发生什么?您能否以代码而不是图片的形式发布一个最小但完整的示例?
  • @JBNizet 无法编译的源代码。
  • 发布一个完整最小示例,作为代码。
  • 您排除了 mockito-core 但依赖于 mockito-all。 Springboot 喜欢确定所有依赖版本,也许这就是问题所在。也许你可以只定义一个版本属性,见spring.io/blog/2016/04/13/…

标签: maven spring-boot mockito dependency-management


【解决方案1】:

Mockito 的最新测试版是 2.0.106-beta。但是 mockito-all 停留在 2.0.2-beta 版本,该方法不存在。

使用 mockito-core 代替 mockito-all,并使用存在此方法的最新版本。

【讨论】:

  • 那正是我刚刚做的事情;)
猜你喜欢
  • 2018-03-05
  • 1970-01-01
  • 2022-01-05
  • 1970-01-01
  • 2019-04-08
  • 2013-07-15
  • 2012-04-11
  • 2014-06-23
  • 2021-10-28
相关资源
最近更新 更多