[SPRING] 자바 주석 - 코드 단순화
SPRING자바 주석 - 코드 단순화
다음 코드를 단순화 할 방법을 찾고 있습니다.
@WebAppConfiguration
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {
// My configuration classes
})
public class MyServiceTest {
@Autowired
private MyService service;
@Test
public void myTest() {
Assert.assertTrue(service != null);
}
}
많은 구성 클래스가 있으며 각 테스트 클래스에이 클래스를 넣고 싶지 않습니다. 그래서 나는 내 자신의 주석을 만들 생각을 가지고있다 :
@WebAppConfiguration
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {
// My configuration classes
})
public @interface IntegrationTests {
}
나는 그것을 다음과 같은 방법으로 사용하려고 노력한다 :
@IntegrationTests
public class MyServiceTest {
@Autowired
private MyService service;
@Test
public void myTest() {
Assert.assertTrue(service != null);
}
}
하지만 작동하지 않습니다. 어떤 생각?
해결법
-
==============================
1.이러한 주석을 수퍼 클래스에 배치 할 수 있습니다.
이러한 주석을 수퍼 클래스에 배치 할 수 있습니다.
@WebAppConfiguration @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { // My configuration classes }) public abstract class AbstractIntegrationTest { ... }
.
public class MyServiceTest extends AbstractIntegrationTest { ... }
또한이 방법을 사용하면 기본 클래스에서 공통적 인 @Autowired 종속성을 선언하고 구체적인 테스트에서 @ContextConfiguration 클래스를 사용자 정의 할 수 있습니다.
-
==============================
2.사용자 정의 작성 주석이 작동하지 않는 이유는 JUnit이 @RunWith를 메타 주석으로 지원하지 않기 때문입니다. 따라서 다음과 같이 주석을 작성할 때 ...
사용자 정의 작성 주석이 작동하지 않는 이유는 JUnit이 @RunWith를 메타 주석으로 지원하지 않기 때문입니다. 따라서 다음과 같이 주석을 작성할 때 ...
@WebAppConfiguration @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { /* configuration classes */ }) public @interface IntegrationTests { }
JUnit은 SpringJUnit4ClassRunner를 사용하고 싶지 않다는 것을 알 수 있습니다.
스프링 프레임 워크 4.0 이상은 @WebAppConfiguration과 @ContextConfiguration의 선언을 메타 주석으로 사용하는 데 아무런 문제가 없어야합니다.
즉, 다음과 같은 작업이 필요합니다.
@WebAppConfiguration @ContextConfiguration(classes = { /* configuration classes */ }) @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.TYPE) public @interface IntegrationTests { } @RunWith(SpringJUnit4ClassRunner.class) @IntegrationTests public class MyServiceTest { @Autowired private MyService service; @Test public void myTest() { assertNotNull(service); } }
또는 axtavt에서 권장하는 추상 기본 테스트 클래스를 사용할 수 있습니다.
문안 인사,
Sam (Spring TestContext Framework 작성자)
from https://stackoverflow.com/questions/24653804/java-annotations-code-simplifications by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 제네릭 매개 변수 별 싱글 톤 인스턴스 (0) | 2019.02.26 |
---|---|
[SPRING] 재 연결시 시퀀스의 현재 값이 다음 100으로 넘어갑니다 (0) | 2019.02.26 |
[SPRING] CXF 클라이언트 : 요청한 대상에 대한 유효한 인증 경로를 찾을 수 없습니다. (0) | 2019.02.25 |
[SPRING] JSR-303 @Valid 주석이 하위 객체 목록에 대해 작동하지 않습니다. (0) | 2019.02.25 |
[SPRING] Eclipse가`ehcache '와 동작하도록 설정하는 법 (0) | 2019.02.25 |