2013-08-29 1 views
0

나는 자바에 대한 초보자이며 문제를 직면하고있다. 나는 다음 코드를 한 :이 변수 때문에 '적인 filePath'외부 함수를 선언 한정의 된 전역 변수는 사용할 수 없습니다. 제발 제안하십시오

public class ReadExcel {  
Config conf = new Config(); 
String filePath = conf.getInputfilePath(); 

@Test 
public void readFullXL() {  
try { 
FileInputStream FSRead = new FileInputStream(filePath); 

을; 글로벌 변수로 사용하고 싶습니다. 그러나 readFullXL() 내부에서 변수 'filePath'에 대한 값을 가져올 수없고 null 포인터 예외가 발생합니다.

누군가 제안 할 수 있습니까? Junit 파일에서 전역 변수를 선언하는 방법.

+0

그런 다음 당신은 가치를 얻을. 이것은'conf.getInputfilePath()'가'null'을 반환했을 때 유효한 행동입니다. – Holger

+0

홀거, 나는 이해하지 못했다. 이것이 왜 유효한 행동입니까? – Asvhini

+0

'filePath'가'null'이면 당신은 NullPointerException을 얻을 것입니다. 포인트. 이미 말했듯이'conf.getInputfilePath()'의 결과가'null'인지 아닌지를 확인해야합니다. 그렇다면'null'입니다. Config 클래스에 대해 알지 못하기 때문에 추측 할 수 없습니다. – Holger

답변

0

편집 : 물론 먼저 당신은 해 당신의 getInputfilePath() 메소드가 null를 반환하지 않습니다 있는지 확인하십시오.

: UnitTesting (JUnit - Tutorial)에 대한 정보를 읽으시기 바랍니다.

단지 하나의 테스트 인 경우 해당 테스트에서 필요한 클래스를 인스턴스화 할 수 있습니다.

@Test 
public void readFullXL() {  
    Config conf = new Config(); 
    FileInputStream FSRead = new FileInputStream(conf.getInputfilePath()); 
    //... 

} 

당신이 계속 진행하여 @Before 주석을 사용하여 설정 방법을 구현할 수 같은기구에 의존하는 여러 검사를합니다. 모든 테스트 (@Test 주석) 메소드 전에 설정 메소드가 호출됩니다.

class ReadExcel {  
Config conf; 

@Before 
public void setUp() { 
    conf = new Config(); 
} 

@Test 
public void readFullXL() {  
    //... 
    FileInputStream FSRead = new FileInputStream(conf.getInputfilePath()); 
    // Run your test 

} 
} 
+0

답변 해 주셔서 고맙겠 습니다만 이것이 작동하지 않습니다. – Asvhini

+0

conf.getInputfilePath()의 반환 값을 확인 (디버그) 했습니까? 디버그 모드에서 – Sambuca

+0

이 Null을 반환합니다. – Asvhini

0

응답 해 주셔서 감사합니다. config와 ReadExcel 파일 사이에 인터페이스를 생성하여 작동 시켰습니다. 필요하지 않은 구성 파일에서 Junit 테스트 주석을 제거했습니다. 이 값이`null` 비록

덕분에, Ashvini

관련 문제