【发布时间】:2019-06-06 06:31:34
【问题描述】:
以下是我的目标:
- 为 4.1.6.RELEASE 版本的 Spring 代码编写 Jupiter 测试用例 [Junit5 中的测试用例]。
我选择了以下操作 [因为 Junit5 支持在 Junit4 runner 上运行 Jupiter 测试]:
- 编写一个 Jupiter 测试用例 [Junit5 中的测试用例]
- 使用 Junit4 Runner [在 IntelliJ IDE 中] 运行
IDE 和代码版本详情:
- 春季版:4.1.6.RELEASE
- Java 版本:1.8 [Java 8]
- IDE:IntelliJ 社区 2018.3
我面临的问题:
- 当我在 IntelliJ IDE 中运行 jupiter 测试用例时: 我看到测试用例是由 junit5 运行的。 [IntelliJ 跟踪显示:“com.intellij.rt.execution.junit.JUnitStarter -ideVersion5 -junit5”] 结果,预期的对象没有在我的测试类中自动装配/注入。
我已将 junit4 和 junit5 从代码添加到类路径。
有人可以建议如何将 intellij 配置为每次运行测试时只使用 junit4 runner。
要测试的类:
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
@Repository
public class MyClassImpl implements IMyClass {
@PersistenceContext
private EntityManager entityManager;
@Override
public String getName(Long Id) {
String queryString = "some query string";
Query query = entityManager.createNativeQuery(queryString);
List<String> resultList = query.getResultList();
return resultList.isEmpty() ? null : resultList.get(0);
}
单元测试代码:TestClass 测试 MyClassImpl 类。
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ActiveProfiles;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
@WebAppConfiguration
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {EnvironmentConfig.class, DataConfig.class, WebConfig.class})
@ActiveProfiles("dev")
class MyClassImplTest {
@Autowired
private IMyClass myClassObj;
@Test
void getAssessmentNameTestIT()
{
if (myClassObj == null)
System.out.println(" ************ I am NULL ************");
else {
System.out.println(" ************ I am NOT NULL ************");
myClassObj.getName(21L);
}
}
}
注意:如果我只使用 Junit 4 [不使用任何 junit5 库] 编写相同的测试用例,则会注入预期的对象。
Maven 依赖项:
- junit-jupiter-api 发布
- junit-jupiter-engine 发布
- junit-platform-runner 1.2.0
- junit 4.10 [测试]
Maven 插件:
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M3</version>
<dependencies>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-surefire-provider</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>RELEASE</version>
</dependency>
</dependencies>
提前致谢
【问题讨论】:
标签: intellij-idea junit junit5