【问题标题】:Junit test cases are not running when i do mvn clean install当我执行 mvn clean install 时,Junit 测试用例没有运行
【发布时间】:2019-02-28 03:48:18
【问题描述】:

我写了一个spring boot应用。我也为此编写了 Junit 测试用例。当我运行mvn clean install 命令时,测试用例没有作为该 mvn 构建的一部分运行。但是当我只是右键单击并作为 Junit 测试用例运行时,我的所有测试用例都会执行。我相信有一些配置错误。 我正在使用 spring-boot、maven 作为构建和 Eclipse ide。

我的测试类名称是 TestService.java,它位于 src/test 文件夹中

public class TestService {

    JsonUtil jsonUtil;
    String jsonString;
    @Before
    public void setData() {
        jsonString = "{\"id\":\"one\"}";
        jsonUtil = new JsonUtil(new ObjectMapper());
    }

    @Test
    public void testGetStringAsJson() {

        JsonNode node = jsonUtil.getStringAsJson(jsonString);
        Assert.assertEquals("one", node.get("id").textValue());
    }

}

下面是我的 pom.xml

<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>com.xyz</groupId>
  <artifactId>xyz</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>xyz</name>


    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.4.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
        <!-- dependency versions -->
        <com.google.guava.guava.version>22.0</com.google.guava.guava.version>
        <io.springfox.springfox-swagger2>2.7.0</io.springfox.springfox-swagger2>
        <io.springfox.springfox-swagger-ui>2.7.0</io.springfox.springfox-swagger-ui>
    </properties>

    <dependencies>
        <!-- For default Spring Boot utilities -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <!-- For testing possibility -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <!-- For all mvc and web functions -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-hateoas</artifactId>
        </dependency>

        <!-- Spring security related dependencies 

        <dependency>
            <groupId>org.springframework.security.oauth</groupId>
            <artifactId>spring-security-oauth2</artifactId>
        </dependency>-->

        <!-- Default persistence functions -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-java8</artifactId>
            <version>5.0.5.Final</version>
        </dependency>

        <!-- In-Memory DB -->
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <scope>runtime</scope>
        </dependency>

        <!-- Java Utilities from google -->
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>${com.google.guava.guava.version}</version>
        </dependency>

        <!-- Include swagger for API description -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>${io.springfox.springfox-swagger2}</version>
        </dependency>

        <!-- Include swagger for API description UI -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>${io.springfox.springfox-swagger-ui}</version>
        </dependency>

        <!-- Common libraries  -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <dependency>
            <groupId>commons-collections</groupId>
            <artifactId>commons-collections</artifactId>
            <version>3.2.2</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/commons-lang/commons-lang -->
        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>2.6</version>
        </dependency>



    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

Maven 输出

[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building xyz 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.6.1:clean (default-clean) @ xyz ---
[INFO] Deleting C:\Users\rk\Documents\WS\xyz\target
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ xyz ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
[INFO] Copying 1 resource
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ xyz ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 17 source files to C:\Users\rk\Documents\WS\xyz\target\classes
[WARNING] /C:/Users/rk/Documents/WS/xyz/src/main/java/com/weather/xyzTestApplication.java: C:\Users\rk\Documents\WS\xyz\src\main\java\com\weather\xyzTestApplication.java uses or overrides a deprecated API.
[WARNING] /C:/Users/rk/Documents/WS/xyz/src/main/java/com/weather/xyzTestApplication.java: Recompile with -Xlint:deprecation for details.
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ xyz ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ xyz ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 4 source files to C:\Users\rk\Documents\WS\xyz\target\test-classes
[WARNING] /C:/Users/rk/Documents/WS/xyz/src/test/java/com/weather/controller/TestxyzController.java: C:\Users\rk\Documents\WS\xyz\src\test\java\com\weather\controller\TestxyzController.java uses unchecked or unsafe operations.
[WARNING] /C:/Users/rk/Documents/WS/xyz/src/test/java/com/weather/controller/TestxyzController.java: Recompile with -Xlint:unchecked for details.
[INFO] 
[INFO] --- maven-surefire-plugin:2.18.1:test (default-test) @ xyz ---
[INFO] 
[INFO] --- maven-jar-plugin:2.6:jar (default-jar) @ xyz ---
[INFO] Building jar: C:\Users\rk\Documents\WS\xyz\target\xyz-0.0.1-SNAPSHOT.jar
[INFO] 
[INFO] --- spring-boot-maven-plugin:1.5.4.RELEASE:repackage (default) @ xyz ---
[INFO] 
[INFO] --- maven-install-plugin:2.5.2:install (default-install) @ xyz ---
[INFO] Installing C:\Users\rk\Documents\WS\xyz\target\xyz-0.0.1-SNAPSHOT.jar to C:\Users\rk\.m2\repository\com\weather\xyz\0.0.1-SNAPSHOT\xyz-0.0.1-SNAPSHOT.jar
[INFO] Installing C:\Users\rk\Documents\WS\xyz\pom.xml to C:\Users\rk\.m2\repository\com\weather\xyz\0.0.1-SNAPSHOT\xyz-0.0.1-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 16.643 s
[INFO] Finished at: 2018-09-24T22:44:24+05:30
[INFO] Final Memory: 34M/248M
[INFO] ------------------------------------------------------------------------

【问题讨论】:

  • TestService.java 相对于您的项目根目录的路径是什么?是src/test/TestService.java还是src/test/java/com/foo/bar/TestService.java
  • 它是\src\test\java\com\...\TestService.java
  • 运行下面给定的命令是否执行测试用例。如果是,请分享您的 pom.xml。 "mvn install -Dmaven.test.skip=false"
  • tree 的输出或项目结构的类似视图也会有所帮助。确保您的项目符合标准目录布局:maven.apache.org/guides/introduction/…
  • running clean install -Dmaven.test.skip=false 也没有运行测试

标签: java maven junit


【解决方案1】:

您将如何通过 spring 初始化程序或手动创建 pom?最有可能导致插件无法执行的构建路径问题。您可以通过 eclipse 运行后检查正在使用哪个版本,稍后通过 mvn 依赖项进行验证:tree 只是为了知道相同的版本也可以从 cmd 获得。

【讨论】:

    【解决方案2】:

    检查 pom.xml 转到“有效 POM”视图。 检查标签下的值。它似乎没有指向正确的位置。如果 pom.xml 指向不同的位置,您可以覆盖该属性。

    【讨论】:

    • 我建议 OP 将代码移动到预期的标准位置,而不是更改 POM。您可以更改位置,但使用标准 maven 树通常会更好,因为要跟踪和管理的自定义项更少。
    • C:\Users\rk\Documents\xyz\abc\src\test\javaC:\Users\rk\Documents\xyz\abc\target \test-classes 这看起来是正确的
    • 所有配置看起来都正确。尝试禁用 Maven 行为并再次启用它(如果使用 Eclipse)。
    • 我也这样做了。没有运气:(
    • 尝试在调试模式下运行构建并检查在surefire插件中发生了什么。 mvn test 也执行测试用例吗?
    猜你喜欢
    • 2021-04-23
    • 2013-06-29
    • 1970-01-01
    • 2011-10-06
    • 1970-01-01
    • 2021-07-23
    • 2013-11-16
    • 2016-11-11
    • 1970-01-01
    相关资源
    最近更新 更多