단위 테스트의 경우 프레임 워크가 얼마나 낮은 지 알면 항상 어렵습니다.테스트 할 수없는 것이 있습니까?
우리가 .NET Framework, 즉 System.IO.File 클래스에 직접 의존하는 클래스를 갖고 있다면 실제로는 테스트 할 수 없습니다.
물론이 클래스를 종속 클래스에 넣을 수는 있지만 모든 .NET 클래스를 래핑하기 시작합니다. 래퍼가 곧바로 통화하지 않으면 어떻게 될까요? 어쩌면 테스트/비즈니스 로직을 먼저 수행 할 것인가?
현재 특정 수준까지 랩핑 한 다음 래퍼 단위 테스트를 방해하지 않습니다. 나중에 통합 및 탐색 테스트를 통해 테스트 될 것이므로 아마도 괜찮을 것입니다.
이 클래스는 단단히 .NET 프레임 워크에 연결되어.. 잘 먹으 렴하지만 지금은 격리에서 테스트 어차피,이 등 존재하는 파일이 필요합니다 : 여기
그냥 내 지점을 설명하기 위해 C#의 예입니다 . 같은 것을 수행하여 우리가 할 수있는public class PathResolver
{
public string Resolve(string filename)
{
string completePath = string.Empty;
if(!File.Exists(filename))
{
return Path.Combine(@"D:\MyExample", filename);
}
return completePath;
}
}
단위 테스트이 :
public class PathResolver
{
private readonly IFileSystem _fileSystem;
public PathResolver(IFileSystem fileSystem)
{
_fileSystem = fileSystem;
}
public string Resolve(string filename)
{
string completePath = string.Empty;
if(!_fileSystem.Exists(filename))
{
return _fileSystem.Combine(@"D:\MyExample", filename);
}
return completePath;
}
}
하지만 지금 우리는 "파일 시스템"클래스를 테스트하지 못할!
다른 사람들의 생각은 무엇입니까?
그래, 나는 너의 권리를 생각해. 가능한 한 간단하게 접착제 코드를 유지하고 조금 복잡해 보이면 우리의 대체 시험 방법을 받아 들여라. 그것은 우리가 짐작할 수있는 단위 테스트를하는 것의 가치를 단지 약간 줄입니다 ... 우리가 그 클래스 중 하나에서 무언가를 부숴 버렸는지를 알지 못할 것입니다! –