Junit5 如何包含其他模块的测试类
时间: 2024-03-21 09:37:48 浏览: 30
在 JUnit5 中,可以使用 `@SelectPackages` 和 `@SelectClasses` 注解来包含其他模块的测试类。
假设我们的项目结构如下:
```
my-project/
├── module-a/
│ ├── src/
│ │ └── test/
│ │ └── java/
│ │ └── com.example.modulea/
│ │ └── MyModuleATest.java
├── module-b/
│ ├── src/
│ │ └── test/
│ │ └── java/
│ │ └── com.example.moduleb/
│ │ └── MyModuleBTest.java
└── pom.xml
```
如果我们想在 `my-project` 模块中运行 `module-a` 和 `module-b` 的测试类,可以使用 `@SelectPackages` 注解:
```java
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.SelectPackages;
import org.junit.jupiter.api.TestInstance;
import org.junit.jupiter.api.TestInstance.Lifecycle;
import org.springframework.test.context.junit.jupiter.SpringExtension;
@ExtendWith(SpringExtension.class)
@TestInstance(Lifecycle.PER_CLASS)
@SelectPackages({"com.example.modulea", "com.example.moduleb"})
class MyProjectTest {
// 测试代码
}
```
如果只想包含某个模块中的测试类,可以使用 `@SelectClasses` 注解:
```java
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.SelectClasses;
import org.junit.jupiter.api.TestInstance;
import org.junit.jupiter.api.TestInstance.Lifecycle;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import com.example.modulea.MyModuleATest;
@ExtendWith(SpringExtension.class)
@TestInstance(Lifecycle.PER_CLASS)
@SelectClasses(MyModuleATest.class)
class MyProjectTest {
// 测试代码
}
```
注意:如果要在 JUnit5 中使用 `@SelectPackages` 或 `@SelectClasses` 注解,需要使用 JUnit Jupiter Test Engine,例如在 Spring Boot 项目中,需要引入 `spring-boot-starter-test` 依赖。