스프링 3.0과 jUnit 4.8에서 작업 중이며 일부 단위 테스트를 개발하려고합니다.테스트 사례를 실행할 때 스프링 의존성 삽입 null이 발생했습니다.
사실 junit에서 사용하는 응용 프로그램 컨텍스트에로드 된 XML에 정의 된 테스트 케이스에서 종속성 삽입을 사용하여 bean의 특성 (파일)을 설정하려고합니다.
jUnit 4 aproach에 대한 주석을 사용하여로드 된 XML 파일 구성을 사용하고 있습니다. 이것은 모든 테스트 클래스가 사용하는 주요 BaseTest입니다 :
@ContextConfiguration("/test-context.xml")
@RunWith(SpringJUnit4ClassRunner.class)
@Ignore
public class BaseTest { ... }
그리고 이것은 test-context.xml
<context:component-scan base-package="com.test" />
<bean id="ExtractorTest" class="com.test.service.ExtractorTest">
<property name="file" value="classpath:xls/SimpleFile.xls"></property>
</bean>
의 한 부분입니다 그래서 제가 테스트와 내 수업에서 할 (ExtractorTest
)을 시도하고있다 클래스 패스 내에로드 된 파일로 'file'속성 만 설정됩니다.
public class ExtractorTest extends BaseTest {
private Resource file;
private InputStream is;
public void setFile(Resource file) {
this.file = file;
}
@Before
public void init() {
this.is = this.getClass().getResourceAsStream("/xls/SimpleFile.xls");
Assert.assertNotNull(is);
}
@Test
public void testLoadExcel() throws IOException {
// file is always null, but the InputStream (is) isn't!
Assert.assertNotNull(file.getFile());
InputStream is = new FileInputStream(file.getFile());
HSSFWorkbook wb = new HSSFWorkbook(new POIFSFileSystem(is));
// todo...
}
}
문제는 내가 중단 점을 추가 한 봄이 설정되어 있기 때문에 세터 작품, 그것은 재산 괜찮아요이다 : 여기
테스트와 클래스의 섹션입니다. 하지만 테스트 메소드가 시작될 때 null이고 실행중인 다른 인스턴스이기 때문에 그 이유는 무엇일까요? 테스트를 위해 응용 프로그램 컨텍스트의 XML을 사용하여로드 할 '파일'을 어떻게 설정할 수 있습니까? jUnit을 사용하여 할당 할 수 없으며 이유와 방법을 이해할 수 없습니다. @Before 메서드로 글쓰기를 피하려고 합니다만, 좋은 접근법이라는 것을 잘 모르겠습니다 ...고맙습니다.
PD : 죄송합니다에 대한 내 ;-) 영어
감사합니다. 아론! 그것은 정확히 당신이 말하는 것과 같습니다. Spring과 jUnit에서 테스트 파일을 사용하는 것이 가장 좋은 방법인지는 모르겠지만, 정의 할 새 bean을 많이 사용하고 있지만 (사용하려는 모든 테스트 파일에 대해 1 개) 작동합니다. @Before 메서드에서 할당하는 것이 더 좋은 아이디어 일 수 있습니다 ... 어쨌든, 다시 한번 감사드립니다! –