junit5와 함께 SpringRunner를 사용하기 위한 특별한 구성이 있습니까?
스프링 부트 프레임워크 기반 마이크로 서비스 프로젝트 및 스프링 러너와 함께 실행되는 모든 유닛 테스트.
@RunWith(SpringRunner.class)
이 주석을 추가하면 다음 라이브러리를 가져옵니다.
import org.springframework.test.context.junit4.SpringRunner;
junit5에서 실행할 시험 수업을 어떻게 설정할 수 있습니까?
JUNit Jupiter(일명 JUNit 5)를 사용하면 JUNit 4 메커니즘이므로 더 이상 @RunWith(SpringRunner.class)가 필요하지 않습니다.최신 버전의 Spring/Spring Boot JUNit 5에서는 "Spring-boot-starter-test"를 사용하여 기본 제공됩니다.
혼란스러운 JUNit 4 및 5 기능의 가능성을 줄이기 위해 Maven/Gradle 파일에서 JUNit 4에 대한 종속성을 제외할 것을 권장합니다.
다음은 기본 사항을 보여주는 기사입니다: https://howtodoinjava.com/spring-boot2/testing/junit5-with-spring-boot2/
빌드 경로에서 JUNit4를 제거합니다.
예:
@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class)
@TestPropertySource(locations = "classpath:application-local.properties")
public class MyTest {
@Before
public void setUp() {
...
}
@Test
public void testMethod() {
Assert.assertTrue(...);
}
}
될 것입니다
@SpringBootTest(classes = Application.class)
@TestPropertySource(locations = "classpath:application-local.properties")
public class MyTest {
@BeforeEach
public void setUp() {
...
}
@Test
public void testMethod() {
Assertions.assertTrue(...);
}
}
Spring 2.4에는 JUNit 5가 포함되어 있으며 기본 설정으로 되어 있습니다.
업데이트 외에도.@RunWith(SpringJUnit4ClassRunner.class)
@ExtendWith(SpringExtension.class)
는 다을추했다습에 .build.gradle
테스트가 실제로 실행되는 경우:
test {
useJUnitPlatform {}
}
이 마지막 단계는 JUNIT 4가 저의 종속성 중 하나이기 때문일 수도 있지만, 제가 읽은 다른 모든 것은 이것이 필요하다는 것을 암시하지 않았습니다.
첫 번째 주석 @RunWith(SpringRunner.class)는 SpringBoot 테스트 기능과 Junit 사이의 브리지를 제공하는 데 사용됩니다.SpringRunner.class를 사용하면 테스트에서 콩의 스프링 컨텍스트 로드 및 종속성 주입을 완벽하게 지원할 수 있습니다.@스프링 부츠SpringApplication을 통해 테스트에서 사용할 ApplicationContext 테스트를 만듭니다.내장된 서버 이후로 전체 컨테이너를 부트스트랩하고 웹 환경을 만듭니다.
이 테스트에서는 실제 웹 환경을 RANDOM_PORT로 설정하고 WebServerApplicationContext도 로드하는 것처럼 흉내낼 수 있습니다.내장된 서버가 임의 포트에서 시작되고 수신됩니다.
@RunWith(SpringRunner.class)
@SpringBootTest(classes = {YourPackage.class}, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
class YourClassTest {
@LocalServerPort
private int port;
@Autowired
TestRestTemplate restTemplate;
HttpHeaders headers = new HttpHeaders();
@ParameterizedTest
@JsonFileSource(resources = "/param.json")
void createBusinessEntity(JsonObject object){
....
}
}
@LocalServerPort 주석은 런타임에 할당된 주입된 HTTP 포트를 제공합니다.@Value("${local")에 대한 편리한 대안입니다.server.port}".
Spring 애플리케이션 내의 타사 REST 서비스에 액세스하려면 Spring RestTemplate 또는 TestRestTemplate를 테스트 클래스에 주입하여 통합 테스트에 적합한 편리한 대안을 사용합니다.프로젝트의 spring-boot-starter-test 종속성을 사용하여 런타임에서 "TestRestTemplate" 클래스에 액세스할 수 있습니다.
우리의 테스트 방법에서는 JSON 문자열 또는 매개 변수화된 테스트의 파일에서 데이터를 로드하기 위한 주석을 제공하는 Junit 5 라이브러리인 junit-json-params를 사용하고 있습니다.우리는 또한 @Parameterized로 방법에 주석을 달았습니다.아래 라이브러리를 보완하기 위해 주석을 테스트합니다.주석이 달린 방법이 매개 변수화된 테스트 방법임을 알리는 데 사용됩니다.이 메소드는 개인적이거나 정적이어서는 안 됩니다.또한 @ArgumentsSource 또는 해당 구성된 주석을 통해 ArgumentsProvider를 하나 이상 지정해야 합니다.
@ArgumentsSource test.dll 패키지 안에 넣은 JSON 파일 @JsonFileSource(리소스 = "param.json")를 소스로 만듭니다.@JsonFileSource를 사용하면 클래스 경로의 JSON 파일을 사용할 수 있습니다.단일 객체, 객체 배열 및 JSON 프리미티브를 지원합니다.
파일에서 검색된 JSON 개체는 메서드 매개 변수 "개체"에 바인딩되어 POJO 개체(이 경우에는 엔티티 모델)로 변환됩니다.
Pom.xml에서 이 라이브러리를 가져와야 합니다.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>com.vaadin.external.google</groupId>
<artifactId>android-json</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>net.joshka</groupId>
<artifactId>junit-json-params</artifactId>
<version>5.5.1-r0</version>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-junit-jupiter</artifactId>
<version>${mockito.version}</version>
</dependency>
<dependency>
<groupId>org.junit</groupId>
<artifactId>junit-bom</artifactId>
<version>${junit-jupiter.version}</version>
<scope>import</scope>
<type>pom</type>
</dependency>
Junit 5를 사용하여 스프링 부트 마이크로 서비스를 테스트하는 방법에 대한 전체 샘플과 설명을 단계별로 액세스할 수 있는 DZone 및 내 블로그에 게시된 이러한 기사를 보십시오. https://dzone.com/articles/microservices-in-publish-subscribe-communication-u
언급URL : https://stackoverflow.com/questions/61088682/is-there-any-special-configuration-to-use-springrunner-with-junit5
'programing' 카테고리의 다른 글
T-SQL의 주 번호에서 날짜 가져오기 (0) | 2023.06.30 |
---|---|
Bash 스크립트: #!/bin/bash는 무엇을 의미합니까? (0) | 2023.06.30 |
판다 데이터 프레임에서 유닉스 시간을 읽기 가능한 날짜로 변환 (0) | 2023.06.30 |
SQL Server 2008 Developer 설치 시 사용할 계정 (0) | 2023.06.30 |
SqlCommand를 사용하여 여러 결과 집합을 반환하려면 어떻게 해야 합니까? (0) | 2023.06.30 |