我有个Spring Boot项目。我已经在.../src/test/Java/中编写了单元测试...目录。我的所有单元测试都是*Test.java形式的。当我运行‘mvn test’时,我得到以下输出:
[INFO]
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ frm-api ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 6 source files to /Users/JoelRives/Projects/fasor/fasor-service/fatality-review/target/test-classes
[INFO]
[INFO] --- maven-surefire-plugin:2.22.0:test (default-test) @ frm-api ---
[INFO]
[INFO] -------------------------------------------------------
[INFO] T E S T S
[INFO] -------------------------------------------------------
[INFO]
[INFO] Results:
[INFO]
[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
[INFO]
显然,Maven在编译单元测试时会看到它们。然而,正如您所看到的,它并不运行它们。
我的POM中有以下相关的maven依赖项:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<version>1.5.3.RELEASE</version>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>test</scope>
<version>1.4.194</version>
</dependency>
我的POM还包括以下插件:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.0</version>
<dependencies>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-surefire-provider</artifactId>
<version>1.3.0-M1</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.2.0-M1</version>
</dependency>
</dependencies>
</plugin>
在这方面的任何帮助都是非常感谢的。
我没有展示我的全部POM。以下是JUNIT的相关内容:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<version>1.5.3.RELEASE</version>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>test</scope>
<version>1.4.194</version>
</dependency>
6条答案
按热度按时间u7up0aaq1#
看起来,如果你使用Junit4和Surefire插件2.22版及更高版本,测试就不会被接受。我遇到了类似的问题,使用Sure Fire V2.21.0似乎很管用。
下面是我的surefire配置
w46czmvw2#
对我来说,这是我在
pom.xml
中写的,我使用的是JUnit4一旦我移除
exclusions
,它就开始执行。lbsnaicq3#
使用最新的Surefire,您可以将其配置为使用JUnit4:
s3fp2yjn4#
请注意,这只是部分答案。我可以通过从POM中删除surefire插件来运行单元测试。在过去,我从来没有遇到过万无一失的问题。哦,好吧……,至少测试还在运行--尽管它们可能是坏的:-)我稍后将调查万无一失的问题。谢谢你的建议。
z31licg05#
尝试更新
surefire-plugin
以明确选择测试类,如下所示:你也可以查this,可能是重复的!!
v6ylcynt6#
这里的关键是理解Spring使用的测试引擎。
在我的例子中,我用
@RunWith(SpringRunner.class)
编写了API测试,它在JUnit4下,它与junit-vintage-engine
一起运行。但是单元测试是用JUnit5下的JUnit5编写的,JUnit5与
junit-jupiter-engine
一起运行。SpringBoot的默认引擎是
junit-jupiter-engine
。所以我们必须告诉Spring,我们也想使用junit-vintage-engine
。我们只需在pom.xml中添加依赖项:
或者,如果我们想使用maven-surefire,我们可以在插件中添加依赖项: