簡體   English   中英

如何使用surefire插件在自定義文件夾結構中運行測試

[英]How to use surefire plugin to run test in customized folder structure

我有一個定制的eclipse工作室項目。 對於單元測試,我們正在創建一個測試文件 -

  TestJavaSrc/demoTest.java

現在,這個TestJavaSrc文件夾與POM.xml處於同一級別。這是POM.xml -

 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project>
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.demo.test</groupId>
    <artifactId>demo</artifactId>
    <version>1.0.0</version>
    <packaging>jar</packaging>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.19.1</version>
            </plugin>
        </plugins>
    </build>
</project>

現在,當我將此項目作為mvn test運行時,它無法找到任何測試文件。 而且,當我在命令行上運行以下命令時 -

 mvn "-Dtest=TestJavaSrc/DemoTest.java" test

它給了我錯誤 -

 Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.19.1:test
 (default-test) on project demo: No tests were executed! 
 (Set -DfailIfNoTests=false to ignore this error.) -> [Help 1]

另外,我的classpath中有JUnit4

有什么我想念的嗎?

在Maven 標准目錄布局中 ,用Java編寫的單元測試應位於src/test/java

src目錄包含用於構建項目,其站點等的所有源材料。 它包含每種類型的子目錄: main用於主構建工件, test單元測試代碼和資源,站點等。

因此,Surefire插件將執行完全在該文件夾中的測試; 這可以通過testSourceDirectory參數進行配置。 請注意,此目錄是包含所有測試的基本源目錄。 這意味着如果該基本目錄是somedir並且存在一個名為DemoTest.java的Java類,聲明它位於包foo.bar ,那么磁盤上的文件必須位於somedir/foo/bar/DemoTest.java

這是您(錯誤)使用的參數test輸入的地方:它選擇僅按名稱執行的Java類; 不是通過它的包聲明,也不是通過磁盤上文件的位置。

我建議您將測試類放在該標准目錄中,但如果您真的想這樣做,有多種選擇:

  1. 如果您想擁有一個位於Maven項目基本目錄的TestJavaSrc測試源目錄,那么您可以在POM中使用以下命令對其進行配置:

     <build> <testSourceDirectory>${project.basedir}/TestJavaSrc</testSourceDirectory> </build> 
  2. 如果你想要一個特殊的目錄只是為了那個單獨的測試,也就是說你想保留默認的src/test/java ,但是想要另外考慮這個新的源目錄,那么你可以使用add-test-source Build Helper Maven插件的add-test-source目標:

     <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <version>1.12</version> <executions> <execution> <id>add-test-source</id> <goals> <goal>add-test-source</goal> </goals> <configuration> <sources> <source>TestJavaSrc</source> </sources> </configuration> </execution> </executions> </plugin> 

請注意,這兩種方法都暗示直接位於該文件夾下的demoTest.java文件將位於默認包中,因此它必須沒有package聲明。

假設您根本沒有使用src/test/java進行測試,您可以指示構建使用不同的目錄,例如:

<build>          
    ...
    <testSourceDirectory>${project.basedir}/TestJavaSrc</testSourceDirectory>
    ...
</build>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM