동일한 입력 데이터 파일을 모두 읽는 junit 테스트 클래스 세트를 만들고 있습니다. 아래 테스트 스위트를 만들었지 만, 각 테스트 클래스의 파일 이름여러 junit4 테스트 클래스에서 공통 리소스 이름을 초기화하는 방법
그래서, 난 .. 코드를 반복하지 않고이 작업을 수행 할
@RunWith(Suite.class)
@SuiteClasses({SomeTests.class,someOtherTests.class})
public class AllTests{
}
-------------------
public class SomeTests{
private String[] allfiles;
public SomeTests() {
allfiles = new String[] {"data1.txt","data2.txt"};
}
@Test
public void testXX1(){
//
}
@Test
public void testXX2(){
//
}
}
public class someOtherTests{
private String[] allfiles;
public someOtherTests() {
allfiles = new String[] {"data1.txt","data2.txt"};
}
@Test
public void testYY(){
//
}
}
나는 내가 초기화 할 수있는 테스트 클래스 array..sothat 문자열로 파일 이름을 제공하는 다른 클래스를 만들어야 할 것이라고 생각하는 방법 BeforeClass 주석
public class FileNames {
public static String[] getFileNames() {
return new String[]{"data1.txt","data2.txt"};
}
}
public class SomeTests{
private String[] allfiles;
public SomeTests() {
}
@BeforeClass
public void setUp(){
allfiles = FileNames.getFileNames();
}
@Test
public void testXX1(){
//
}
@Test
public void testXX2(){
//
}
}
와이이 결합하지만 그 올바른 방법입니다 확실하지 오전의 getFileNames()
정적 메서드를 호출하여 allfiles
변수입니다. 이것은 setUp()이 static으로 선언 될 것을 요구하며, 이는 인스턴스 변수 allfiles를 정적으로 만들어야 함을 의미합니다!
나는 이것이 junit testing의 일반적인 시나리오라고 생각한다. 누군가 올바르게이 작업을 수행하는 방법을 알려 줄 수 있는가?
아니요, setUp()은 정적으로 선언 할 필요가 없습니다. 멤버 메서드가 정적 메서드를 호출하는 데는 아무런 문제가 없습니다. 당신이 한 일은 괜찮습니다. 하지만 테스트 도중 내용을 변경하지 않는 한'allFiles' var을 가지고 있어도 신경 쓰지 않을 것입니다 (있을 법하지 않음). 대신 필요할 때마다 정적'getFileNames()'를 호출하면됩니다. – sbk
나는 테스트 스위트'의 java.lang.Exception가 실행이 오류 가지고 : 방법 설정은() org.junit.runners.model.FrameworkMethod.validatePublicVoid에서 \t (FrameworkMethod.java:84) 정적한다 \t을 ...' – damon