2009-08-23 5 views
1

나는 초기화시 접근 가능한 디렉토리에 라이센스가 필요한 소유주 .DLL로부터 객체를 생성하는 C#에서 다음 클래스를 가지고있다. 시스템 경로가 잘못되었을 때 예외가 발생하는지 테스트하려면 어떻게합니까?

public CplexServices{ 
    private Cplex _cplex; 
    public Cplex Cplex { get { return _cplex; } } 
    public CplexServices() 
    { 
     try 
     { 
      _cplex = new Cplex(); 
     } 
     catch 
     { 
      throw new Exception("Path or license file is wrong"); 
     } 
    } 
} 

Windows 시스템 경로가 잘못 또는 라이센스 파일이 정확하지 않은 경우 "새로운 CPLEX는()"실패 할 수 있습니다. 경로 및/또는 라이센스 파일이 잘못되었을 때 올바른 예외가 발생하면 어설 션 테스트를 작성하려고합니다.

경로 또는 라이센스 파일을 변경하지 않고이 테스트를 작성하려면 어떻게해야합니까?

답변

1

테스트 하시겠습니까? 나는 당신이 새로운 Cplex() 호출에 대한 오류 처리 경로가 정확한지 테스트 중이라고 믿습니다.

public CplexServices() 
{ 
    try 
    { 
     _cplex = new Cplex(); 
    } 
    catch 
    { 
     throw new Exception("Path or license file is wrong"); 
    } 
} 

당신은 새로운 CPLEX를 TestNG를하지 않습니다() 자체 라이센스 파일은 당신이 옳은 일을 예외를 슬로우 경우 테스트, 오히려없는 경우는 예외를 throw합니다. 이 경우에 그것은 너무 사소하게 정확해서 나는 아마별로 신경 쓰지 않을 것입니다. 그러나 이것이 다소 복잡하다면, 예를 들어 심각한 복구 처리가 필요한 경우이를 테스트 할 수있는 것이 훨씬 더 좋습니다.

접근 방식은 공장을 통과하십시오.

public CplexServices(CplexFactory myFactory) 
{ 
    try 
    { 
     _cplex = myFactory.makeCplex(); 
    } 
    catch 
    { 
     throw new Exception("Path or license file is wrong"); 
    } 
} 

는 이제 테스트에서 당신은 articficially 테스트 할 경로를 트리거 예외를 던질 수있는 공장을 전달할 수 있습니다.

이것은 여전히 ​​Cplex() 생성자 자체를 테스트하는 방법에 대한 질문을 남깁니다. 아마 이것은 당신의 문제가 아니며 저자는 자체 단위 테스트를 받아야합니다.

+0

새로운 Cplex()가 제대로 작동하는지 테스트하지 않고 path/license가 잘못되었을 때 올바른 예외가 발생하는지 테스트하고 싶습니다. 우리 작업 서버에서 "새로운 Cplex"가 실패하면 오류 메시지없이 비참하게 실패합니다. 방금 예외 코드를 추가하여 다음 번에 경로가 잘못되었을 때 잘못된 경로 나 라이센스 파일로 인해 시간이 부족하다는 것을 알았습니다. 그런 다음 올바른 예외가 발생했는지 테스트 할 수있는 방법이 있는지 생각하기 시작했습니다. 그럼 너희들은 좋은 생각으로 들어왔다. 감사... – derdo

1

수 없습니다. 파일에 대해 잘못된 위치를 설정하고 예외가 발생하는지 확인해야합니다.

하지만이 코드는 실패 여부를 결정하는 코드가 사용자에게 달려 있지 않기 때문에 아마도 어쨌든 단위 테스트를 수행하는 것이 아닙니다.

config에서이 파일의 위치를 ​​설정했다고 가정합니까? 그런 다음 그 위치가 정확한지 테스트해야합니다. 그러나 여러 배포 및 다른 구성이있는 경우 올바른 환경에 맞춰 테스트를 실행해야합니다.

1

당신은 나쁜 경로에 넣어 경로 문제를 테스트하기 위해

string oldPath = Environment.GetEnvironmentVariable("PATH"); 
Environment.SetEnvironmentVariable("PATH", "MyBadPath"); 
// Do tests 
Environment.SetEnvironmentVariable("PATH", oldPath); 

를 사용할 수 있습니다. 라이센스 파일을 테스트하려면 잘못된 라이센스 파일을 보유하고있는 테스트 디렉토리 경로를 입력하십시오.

관련 문제