3
반환 값이 데이터베이스의 값에 따라 달라지는 클래스를 테스트해야합니다. 단위 테스트에서 데이터베이스에 도달 할 수는 있지만 값이 변경 될 수 있습니다. 이것에 대한 표준 해결책이 있습니까?MBUnit을 사용하여 데이터베이스에 대한 값 테스트
반환 값이 데이터베이스의 값에 따라 달라지는 클래스를 테스트해야합니다. 단위 테스트에서 데이터베이스에 도달 할 수는 있지만 값이 변경 될 수 있습니다. 이것에 대한 표준 해결책이 있습니까?MBUnit을 사용하여 데이터베이스에 대한 값 테스트
표준 답변은 클래스를 다시 디자인하여 종속성을 조롱 할 수 있도록하는 것입니다. 이것은 일반적으로 데이터 소스를 클래스로 삽입하여 수행됩니다.
당신은 항상 당신이 더 많은 유연성을 가지고 데이터 소스 인터페이스를 주입하면이
에 대한 DB를 호출 할 필요가 있도록로드가하는 SqlCommand에 의존
class John
{
public John() { }
public void Load()
{
// call to db in here e.g SQLCommand
}
}
이하와 같은 역할을하는 클래스를 가질 수
예 이제 당신이 할 수없는 경우
class John
{ IDataSource _db;
public John(IDataSource db)
{
_db = db;
}
public void Load()
{
_db.Load("John"); // IDataSource can now be either SQL
//or hardcoded or what ever much easier to test
}
}
/당신은 통합 테스트 등이 테스트를 치료해야하지 않습니다. 당신은 그것에 대한 데이터를 설정 하는게 어떻습니까? 예 : 읽을 행을 삽입하십시오. 그런 다음 데이터를 원래 상태로 되돌립니다. 아래쪽은 테스트가 느리고 부서지기 쉽다는 것입니다.