2017-10-26 5 views
0

Citrustest에서 waitFor()를 사용하여 테스트중인 프로세스에서 디스크의 출력 파일을 기다리는 중입니다. 이 코드를 사용했습니다.citrus waitFor(). 파일이 파일을 읽지 못했습니다.

outputFile = new File “/esbfiles/blesbt/bl03orders.99160221.14289.xml"); 
waitFor().file(outputFile).seconds(65L).interval(1000L); 

몇 초 후 파일이 예상대로 폴더에 나타납니다. 테스트 코드를 실행중인 사용자가 파일을 읽을 권한이 있습니다. 그러나 waitFor()는 시간 초과로 종료됩니다.

09:46:44 09:46:44,818 DEBUG dition.FileCondition| Checking file path '/esbfiles/blesbt/bl03orders.99160221.14289.xml' 
09:46:44 09:46:44,818 WARN dition.FileCondition| Failed to access file resource 'class path resource [esbfiles/blesbt/bl03orders.99160221.14289.xml] cannot be resolved to URL because it does not exist' 

무엇이 문제 일 수 있습니까? 클래스 패스 외부의 파일을 확인할 수 없습니까?

+0

디스크의 어디에 정확하게있는 대상 폴더가 있습니까? 경로의 앞뒤가 유닉스 운영체제의 절대 파일 경로가 될 수 있습니다. 선행 파일 경로 구분 기호를 제거하면 프로젝트 작업 디렉토리와 관련된 파일 경로가됩니다. –

+0

다음은 파일의 정확한 경로입니다. **/esbfiles/blesbt/bl03orders.99160221.14289.xml **. 따라서 파일 시스템의 루트에있는 폴더의 하위 폴더에 있습니다. 파일은 생성자의 경로가 주어지면 java.io.File로 읽을 수 있습니다. –

답변

0

이것은 실제로 Citrus의 버그입니다. Citrus는 파일 객체 대신 파일 경로로 작업하며 Spring의 PathMatchingResourcePatternResolver와 함께 Citrus가 절대 파일 경로를 외부 파일 시스템 자원으로 사용하는 대신 classpath 자원을 검색합니다.

이 같은 절대 파일 경로 대신 파일 객체를 제공함으로써이 문제를 해결할 수 있습니다 깨진 파일 객체 변환에 대한

waitFor().file(“file:/esbfiles/blesbt/bl03orders.99160221.14289.xml") 
     .seconds(65L) 
     .interval(1000L); 

문제가 열렸습니다 : https://github.com/christophd/citrus/issues/303

덕분에 그것을 가리키는 위해!