JUNIT5開始測試的寫法發生了很大的改變
按照官網的說法現在的junit變成了下面的這個樣子
JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage
基本的測試方法都放到了JUnit Jupiter 里邊
所以如果代碼寫成下面這個樣子在maven里是跑不了的
package FirstJunit.JTest; import static org.junit.Assert.*; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.runner.RunWith; import org.junit.platform.runner.JUnitPlatform; @RunWith(JUnitPlatform.class) public class FirstJUnit5Tests { @Test public void myFirstTest() { assertEquals(2, 1 + 1); } @BeforeAll static void initAll() { System.out.print("fff"); } @BeforeEach public void init() { System.out.print("start init"); } }
所以maven的plugin要做出一定的修正
下面這個來自於junit5的官方說明,主要是要修改maven-surefire-plugin中的內容將junit-platform-surefire-provider給包含進去
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <java.version>1.8</java.version> <junit.version>4.12</junit.version> <junit.jupiter.version>5.0.2</junit.jupiter.version> <junit.vintage.version>${junit.version}.2</junit.vintage.version> <junit.platform.version>1.0.2</junit.platform.version> </properties> <build> <plugins> <plugin> <artifactId>maven-surefire-plugin</artifactId> <version>2.19.1</version> <configuration> <includes> <include>**/Test*.java</include> <include>**/*Test.java</include> <include>**/*Tests.java</include> <include>**/*TestCase.java</include> </includes> <properties> <!-- <includeTags>fast</includeTags> --> <excludeTags>slow</excludeTags> <!-- <configurationParameters> junit.jupiter.conditions.deactivate = * </configurationParameters> --> </properties> </configuration> <dependencies> <dependency> <groupId>org.junit.platform</groupId> <artifactId>junit-platform-surefire-provider</artifactId> <version>${junit.platform.version}</version> </dependency> </dependencies> </plugin> </plugins> </build>
這樣在運行maven test的時候就可以進行正常的測試。
還有就是如果在類的開頭不寫@RunWith(JUnitPlatform.class)的話 會造成 junit插件的不識別,導致 run as junit test 選項不出現。
配置方面就是這個樣子。