간단한 테스트를 실행하여 Maven 프로젝트의 src/test/resources 폴더에 저장했지만 JUnit 테스트에 실패한 속성 파일의 값을 확인하려고합니다. 내 테스트는 파일 OK를 선택하지만 파일이로드되지 않는 것처럼 예상 값을 반환하지 않습니다. 다른 사람도 비슷한 문제가 있습니까? 다음과 같이 내 코드/테스트는 다음과 같습니다Junit 테스트가 Properties 파일을로드 할 수 없음
내 응용 프로그램 컨텍스트 파일 :
<bean id="myProps" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="location" value="classpath:test.properties"/>
</bean>
내 코드 :
@Resource(name = "myProps") private Properties myProps;
@Value("#{myProps['totalNumberOfChanges']}") private String totalNumberOfChangesStr;
@Value("#{myProps['delayTime']}") private String delayTimeStr;
public void parseAttributesFromConfigFile() {
String methodName = "parsePropertyAttributesFromConfigFile";
try {
totalNumberOfChanges = Integer.parseInt(totalNumberOfChangesStr);
delayTime = Integer.parseInt(delayTimeStr);
numEntriesToIterateThru = (totalNumberOfChanges/delayTime);
} catch (NumberFormatException nfe) {
LOGGER.error(methodName, "", "Number Format Exception Occured" + nfe.getMessage());
}
}
내 JUnit 테스트 :
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:META-INF/spring/Testpu.xml" })
public class ConfigPropertiesTest {
private final int NUM_ENTRIES_TO_ITERATE_THRU = 100;
private final int TOTAL_NUMBER_OF_CHANGES = 100000;
private final int DELAY_TIME = 1000;
private ConfigProperties configProperties;
@Before
public void setUp() throws Exception {
configProperties = new ConfigProperties();
}
@Test
public final void testParseAttributesFromConfigFileIsCalled() {
configProperties.parseAttributesFromConfigFile();
int numEntriesToIterateOver = configProperties.getNumEntriesToIterateThru();
assertEquals(numEntriesToIterateOver, NUM_ENTRIES_TO_ITERATE_THRU);
int numberOfChanges = configProperties.getTotalNumberOfChanges();
assertEquals(numberOfChanges, TOTAL_NUMBER_OF_CHANGES);
int delayTime = configProperties.getDelayTime();
assertEquals(delayTime, DELAY_TIME);
}
}
을 사용하여 해당 인스턴스를로드하십시오. 다음 문장을 명확히하십시오. '내 테스트는 파일을 가져오고 있지만 파일은 예상대로 리턴하지 않습니다. 그 짐을 싣고있는 것 같아. 파일이 정상적으로 픽업되고 있다는 것을 어떻게 알 수 있습니까? 그리고 픽업이 정상적으로 실행되면 '로드가 안되는 것'으로 무엇을 의미합니까? –
파일 이름을 무언가로 변경하면 "초기화 메소드 호출에 실패했습니다. 중첩 예외는 java.io.FileNotFoundException : 클래스 경로 리소스 [test1.properties]가 존재하지 않아 열 수 없습니다."와 같은 다른 오류가 발생합니다. 나는 파일 OK를 집어 들고 있다고 가정하고 주석이나 내가 Bean을 정의한 방식에 문제가있다. 또한, 내가 "totalNumberOfChangesStr"의 값을 Null 그래서 숫자 형식 예외를 얻을 디버깅 할 때. – user676567
당신은'Properties'의 내용을 인쇄 해 보았습니다. 이것은 다음 두 가지 문제 중 하나로 이어질 것입니다. 1. 데이터/키가 속성에서 예상대로되지 않습니다. 2.'@ Value'가 예상대로 작동하지 않습니다. 문제의 범위를 좁히면 진단하는 데 도움이됩니다. –