홈>
스프링 부트 테스트에 @BeforeClass 메소드를 갖고 싶습니다.이 메소드는 정적이며 "companion object"에 선언되어 있어야합니다.
@RunWith(SpringRunner::class)
@SpringBootTest
@ActiveProfiles("test")
open class MyTest {
companion object {
@Autowired
lateinit var repo: MyRepository
@BeforeClass
@JvmStatic
fun X() {
user = User()
repo.save(user)
}
}
반면에이 방법에서는 자동 와이어 링 된 구성 요소를 사용해야하지만 여기 는 정적 컨텍스트에서는 불가능하며이 오류가 발생했습니다 :
lateinit property repo has not been initialized
이 상황을 어떻게 처리해야합니까?
-
답변 # 1
관련 자료
- .net - monodevelop 잘못된 정적 메서드 호출 구문 - "[msbuild] :: gettargetframeworkidentifier ( '$(targetframework)'
- java - 동일한 클래스의 인스턴스 메소드 내부에서 정적 메소드 사용
- java - 정적 메소드 URLEncoderencode를 어떻게 테스트 하시겠습니까?
- typescript - 클래스에서 정적 메소드의 이름을 얻는 방법은 무엇입니까?
- kotlin은 리플렉션을 통해 위임 된 메서드에 액세스 할 수 없습니다 - "javalangnosuchmethodexception"
- javascript - 반응 - 정적 메서드는 항상 정의되지 않은 값을 반환
- java - 메소드에 정적 변수 번호를 어떻게 추가합니까?
- javascript - 정적 메소드의 첫 번째 매개 변수는 호출 된 클래스를 참조합니까?
- node.js - 클래스에서 정적 메소드를 호출 할 수 없습니다 유형 오류를 표시하십시오 - method is function javascripts
- android - 매개 변수가있는 onClick to 정적 메서드에 대한 Howto androidx-databinding
- java - Arrays 클래스에 배열의 요소를 바꾸는 정적 메소드가없는 이유는 무엇입니까?
- php - 정적 메소드를 사용하여 객체 생성
- Java Enum 정적 메소드 스레드 안전성?
- android - javalangnosuchmethoderror - 정적 메소드 없음 :firebasemessagingservice를 사용하지 않더라도 firebase 문제가 있습니까?
- javascript - React 클래스 컴포넌트에서 메소드 전에 static 키워드를 사용하는 경우
- Java 정적 메소드를 파이썬의 함수 + 함수 이름과 동일한 이름을 가진 인스턴스 메소드로 시각화 할 수 있습니까?
- pom.xml - mule-4 - dataweave 20에서 map 객체를 인수로 사용하여 정적 메서드 호출
- java - Kotlin에서 스프링 분석법 주입이 작동하지 않는 이유는 무엇입니까?
- 타입 스크립트 유형의 정적 메소드 참조 - 메소드 서명 자동 픽업
- mocking - 모의 객체를 반환하기 위해 팩토리 정적 메서드를 모의하는 방법은 무엇입니까?
관련 질문
- spring - junit 초기화 오류 - javalangillegalaccesserror : 클래스 orgapachelogginglog4jcorelookupmainmaplookup
- Spring Boot에서 JUnit 5를 사용하여 RestTemplate을 모의 할 수 없습니다
- spring - JUnit 5에서 @Value를 사용하여 속성 값을 가져올 수 없습니다
- java - 웹 서버가 봄 부팅에서 HTTP를 노출하기 전에 코드가 실행되는지 확인하십시오
- java - 일부 컨트롤러 방법에서 AutoWired JPA 저장소가 null입니다
- java - 이름이 'scopedTargetcontextHeadersBuilder 인 빈 생성 오류
- java - thymeleaf + 스프링 부츠 - getter 메서드를 사용하여 이미지 표시
- java - 생성자 인수가있는 Spring 컴포넌트
- java - main의 @Configuration의 @Bean을 테스트 @Component로 자동 연결할 수 없습니다
- java - Bean 내부에서 사용할 Autowire 서비스
Junit 5로 전환하는 것이 좋습니다.
@BeforeAll
를 사용할 수 있습니다. 정적 인 비 정적 방법. 또한 Junit 5 Spring Extension을 사용하면@BeforeAll
에 종속성을 주입 할 수 있습니다 .JUnit 버전을 업데이트하는 방법은 사용하는 빌드 도구 (Maven 또는 Gradle)에 따라 다릅니다. 또한
@RunWith(SpringRunner::class)
를 교체해야합니다@ExtendWith(SpringExtension::class)
와 함께 .또한 속성 파일
src/test/resources/junit-platform.properties
를 만들어야합니다 내용 :junit.jupiter.testinstance.lifecycle.default = per_class
. 이것으로, 당신은@BeforeAll
를 사용하는 데 사용할 수 있습니다 비 정적 방법에 대해.많은 것처럼 보이지만 Kotlin과 Spring Boot를 사용하는 경우 JUnit 5가 더 적합합니다.
참고 : Spring Boot 및 Kotlin을 사용하여 웹 애플리케이션 빌드시JUnit 5로 테스트