단위 테스트 목적으로 조롱 된 Spring 컨텍스트를 만들려고합니다. 우리의 Spring Configuration은 꽤 크고 현재는 Spring + Springockito Annotations를 사용하여이 것을 얻으 려합니다.Java Spring : 여러 파일에서 Mocking Context
내가 발견 한 문제는 컨텍스트 만들기/조롱을 처리하는 여러 Java 클래스를 갖고 싶다는 것입니다. (
//declaring context classes below
@ContextConfiguration(loader = SpringockitoAnnotatedContextLoader.class,
classes = {
ClassA.class,
ClassB.class,
SubClassCOne.class,
SubClassCTwo.class,
... //list goes on and on with more mocks
}
)
public class Configurator {
@Autowired
ClassA classA;
@ReplaceWithMock
ClassB classB;
@Autowired
List<ClassC> classesC;
@Autowired
SubClassCOne subclassCOne;
....
문제는 C의 서브 클래스의 목록은 여기가하고 싶은 것보다 훨씬 더 큰 것입니다 : 지금이이 모양으로 (의는 클래스 A는 생성자의 인수로 ClassCs의 클래스 B와 목록을 소요 가정 해 봅시다)
ListProvider.java :
//THIS ANNOTATION WON'T BE TAKEN INTO ACCOUNT
@ContextConfiguration(loader = SpringockitoAnnotatedContextLoader.class,
classes = {
SubClassCOne.class,
SubClassCTwo.class,
...
}
)
public class ListProvider {
@Autowired
List<ClassC> classesC;
...
public List<ClassC> getClassesC(){
return classesC;
}
...
Configurator.java :하지 나는) 단 하나 개의 클래스에 모든 책임을두고있어 언급, 그래서 나는 다음과 같은 작품의 처리됩니다 다른 클래스의 생각
@ContextConfiguration(loader = SpringockitoAnnotatedContextLoader.class,
classes = {
ClassA.class,
ClassB.class,
ListProvider.class,
...
}
)
public class Configurator {
@Autowired
ClassA classA;
@ReplaceWithMock
ClassB classB;
@Autowired
ListProvider listProvider
@Autowired //probably not autowired anymore?
List<ClassC> classesC;
...
//then somewhere it'll take classesC from listProvider using getter?
그러나 문제는 ListProvider가 제대로 autowire가된다하더라도, 그것은 @ContextConfiguration
클래스를 사용하지 않습니다 내가 정확히 어떤 Configurator.java
모든 것을 제공하지 않습니다하지 않는 한 어떤 ClassC의 서브 클래스를 찾을 것입니다 온다 나는 피하고 싶습니다.
이 컨텍스트 구성을 여러 파일로 분할하는 변경 사항이 있습니까?
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes=MainConfig .class)
@ActiveProfiles("test")
public class ATest {
그래서 테스트가 모든 시간에 MainConfig을 선택할 것입니다
@Configuration
@ComponentScan(basePackages = "com.greg")
public class MainConfig {
}
@Configuration
@Profile("test")
public class TestConfig {
}
그런 다음 테스트 프로필을 사용하여 테스트를 실행 만됩니다