以下是我的目标:
IDE和代码版本详细信息:
我已经从代码中向类路径添加了junit4和junit5。
有人能建议一下如何配置intellij以使每次运行测试时只使用junit4运行器。
要测试的类:
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
html" target="_blank">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);
}
Unittest代码:测试MyClassImpl类的TestClass。
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);
}
}
}
注意:同样的测试用例,如果我只使用JUnit4编写[没有使用任何junit5库],那么目标对象将被注入。
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>
提前致谢
@runwith(SpringJunit4ClassRunner.class)
只适用于JUnit4,因此类名中有“junit4”。
因此,如果您使用的是JUnit 4运行器
,则不能使用JUnit 5(JUnit Jupiter)中的注释--例如org.JUnit.Jupiter.api.test
--。那绝对行不通。
要在JUnit Jupiter中使用Spring的测试支持,您必须使用SpringExtension
而不是SpringJUnit4ClassRunner
或SpringGrunner
--像这样:@ExtendWith(SpringExtension.class)
。
从Spring Framework 5.0起,SpringExtension
作为Spring-test
工件的一部分得到正式支持:https://docs.Spring.io/Spring/docs/current/spring-framework-reference/testing.html#testcontext-junit-jupiter-extension
请注意,如果您从我的GitHub存储库https://GitHub.com/sbrannen/spring-test-junit5中使用springextension
的原始版本,则可以将其与Spring Framework 4.3.x一起使用
在您的情况下,如果您仍然在使用Spring Framework 4.1.6.Release,就不可能在JUnit5中使用Spring的测试支持。您至少需要升级到Spring Framework 4.3.x或Spring Framework 5.1.x。
问候,
Sam(Spring TestContext框架的作者)
问题内容: 在JUnit4中可以吗? 在JUnit3中,我将执行以下操作: 问题答案: takari-cpsuite(最初由Johannes Link 开发)提供了一个适合您需求的classpath- suite。它允许通过正则表达式对Classpath中的类进行过滤,例如:
我正在IntelliJ中用基本的JUnit5测试处理一个Kotlin项目,使用Maven管理依赖项。我已经通过IntelliJ命令成功地执行了JUnit测试。 今天早些时候,我尝试开始将测试分组到测试套件中,并在pom.xml中添加了junit-platform-runner和junit-platform-commons作为依赖项。从那以后,我每次尝试执行任何测试时都得到以下ClassNotFou
The JUnitPlatform runner is a JUnit 4 based Runner which enables you to run any test whose programming model is supported on the JUnit Platform in a JUnit 4 environment — for example, a JUnit Jupiter
问题内容: 我有大量的测试,大约需要半小时才能运行,并且希望能够并行进行测试。 有没有办法用IntelliJ IDEA 9做到这一点? 问题答案: IDEA仅从版本10开始才了解并行JUnit测试。 有一个跟踪器问题,您可以投票并等待进度:http: //youtrack.jetbrains.net/issue/IDEA-47103 我们计划将其添加到IDEA 10中,但是优先级将取决于票数。