Следуя моей цели :
- Для написания тестового примера Jupiter [Test case in Junit5] для кода Spring в версии 4.1.6.RELEASE.
Я решил сделать следующее [поскольку Junit5 поддерживает запуск тестов Jupiter на Junit4 runner]:
- Напишите контрольный пример Юпитера [Контрольный пример в Junit5]
- Запуск с помощью Junit4 Runner [в IntelliJ IDE]
Подробная информация о версии IDE и кода :
- Spring Version: 4.1.6.RELEASE
- Версия Java: 1.8 [Java 8]
- IDE: IntelliJ Community 2018.3
Проблема, с которой я сталкиваюсь :
- Когда я запускаю тестовый пример Юпитера в IntelliJ IDE:
я вижу, что контрольный пример запускается junit5.
[Трассировка IntelliJ показывает: "com.intellij.rt.execution.junit.JUnitStarter -ideVersion5 -junit5"]
В результате в моем тестовом классе предполагаемый объект не получает автоматическую проводку / инъекцию.
Я добавил 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
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: 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-платформа-бегун 1.2.0
- джунит 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>
Заранее спасибо