2013-07-04 3 views
2

나는 약간의 인터넷 검색을하고 내 구체적인 경우에 맞는 대답을 찾지 못했습니다.유닛 테스트 중에 특정 파일 시스템을 시뮬레이션 할 수 있습니까?

저는 프로젝트 파일 관리자 클래스에서 작업 중이며 Windows 및 Unix 파일 시스템에서 다르게 동작하도록 개발되었습니다.

보다 구체적으로 말하자면, 파일이 발견되지 않으면 관리자는 대소 문자를 구분하지 않고 찾습니다.

이 코드를 변경하기 전에 몇 가지 단위 테스트를 구현하고 싶습니다. 그러나 개발 시스템과 CIP는 모두 Windows에 있으며 유닉스 시스템을 사용할 수 없습니다. 컴퓨터와 IDE는 고객이 제공합니다. 가상화는 옵션이 아니며 듀얼 부팅은 훨씬 적습니다.

빌드에 플랫폼 독립적 인 상태에서 Windows 및 Unix 모드를 모두 테스트 할 수 있습니까? 필자는 이상적인 방법은 전체 테스트 클래스를 모드에서 실행 한 다음 다른 모드에서 실행하는 것이지만 더 실용적인 솔루션도 훌륭하다고 생각합니다.

프로덕션 모드에서 파일 관리자는 Spring을 사용하여 초기화되지만 직접 java.io를 사용하여 체인의 가장 낮은 레벨입니다.

버전 : 자바 6, JUnit을 4.9

+0

API를 모르면 상당히 어렵습니다. 한 수준 또는 다른 수준에서 조롱 할 수 있습니까? JSR 330을 사용하여 동작을 변경할 수 있습니까? – fge

+0

죄송합니다. 내가 할 수있을뿐만 아니라 이것에 답하기 위해 질문을 편집했다. 우리는 Spring을 사용하여 관리자를 초기화하지만 직접 java.io를 사용하여 체인의 끝이다. – Chop

답변

1

당신은 Wubi를 함께 설치하여 쉽게 우분투 부트가 완성 할 수있다.

나는 unit-test가 다른 이유 (속도가 그 중 하나임)로 인해 파일 시스템에 액세스해서는 안된다는 것을 배웠습니다. theese에 자바 6보기 위해

: 당신이 자바 7을 사용한다면 http://docs.oracle.com/javase/6/docs/api/javax/tools/JavaFileManager.html http://docs.oracle.com/javase/6/docs/api/javax/swing/filechooser/FileSystemView.html

이 당신을 도울 수 있습니다 http://download.oracle.com/javase/7/docs/technotes/guides/io/fsp/filesystemprovider.html

+0

OP는 그가 Java 6를 사용하고 있다고 말합니다. Java 7은이 방법을보다 쉽게 ​​만들 수 있습니다 ... – fge

+0

기계 및 소프트웨어는 고객이 제공하므로 변경할 수 없습니다. 듀얼 부팅 또는 VM을 설치할 수 없습니다. – Chop

+0

나머지 대답에 대해보다 구체적이고 적절한 의견을 말하십시오. 파일 시스템 액세스 : 관리자는 직접 java.io를 사용하며 JUnit의 TemporaryFolder + @Rule을 사용하여 이러한 테스트를 수행 할 생각입니다. Java 7 : FileSystemProvider는 필자가 다른 유사한 주제에서 보았던 흥미로운 사실 ​​이었지만 Java 버전을 업그레이드 할 수 없습니다. Java 6의 경우 링크에 관해서는 최대한 빨리 살펴 보겠습니다. 감사. – Chop

0

당신은 유닉스에서 테스트하기 위해 VM을 사용할 수 있습니다. 오라클의 가상 박스는 agood 가상화 소프트웨어입니다. 우분투, 페도라 또는 유닉스 기반 OS의 디스크 이미지를 설치하십시오. 파일을 VM에 전송하십시오. 소스 컨트롤에서 VM으로 직접 체크 아웃 할 수 있으므로 잘 수행해야합니다. 적어도 창문과 리눅스에서 소프트웨어를 테스트 할 수는 있지만, 현재 리눅스를 마음껏 사용할 수는 없습니다.

+0

위와 동일한 설명 : 기계 및 소프트웨어는 고객이 제공하므로 변경할 수 없습니다. 듀얼 부팅 또는 VM을 설치할 수 없습니다. – Chop

+0

VM 또는 테스트 서버와 함께 현실적으로 테스트 할 수있는 방법이 없습니다. 고객에게 전달해야합니다. IMO 이러한 요구 사항이 큰 요구 사항이있는 경우 고객과 협상 할 수 있습니다.그렇지 않으면 면책 조항과 함께 항상 제공 할 수 있습니다. 파일 유틸리티는 상대 경로를 사용할 때 아주 잘 작동합니다. 어쨌든 yur 코드 어딘가에 "C : \ apdir"이 없다면, shud는 잘 가야합니다. – Somesh

+0

나는 최종 답이 이와 비슷한 것일 수 있다고 생각했지만 항상 물어볼 가치가 있습니다. 감사. – Chop

관련 문제