2012-02-16 3 views
0

단위 테스트에 익숙하지 않으므로 잘못된 방향으로 가고 있는지 알려 주시기 바랍니다.Visual Studio Unit Testing : 다른 테스트에서 데이터 가져 오기?

본질적으로 관련 메서드 그룹에서 실행중인 많은 테스트가 있습니다. getAll()save()get(Id) 메서드가 제대로 작동하는지 확인하고 싶습니다. 문제는 save() 함수가 작동하면 결과 요소 ID를 get(Id) 메서드에 대해 실행되는 테스트로 가져 오는 방법을 잘 모르겠습니다.

올바른 방향으로 가고 있습니까, 아니면 단위 테스트가 어떻게 작동 할 것인가에 대한 몇 가지 규칙이 있습니까? Visual Studio 유닛 테스트를 사용하여 어떤 메커니즘을 사용할 수 있습니까?

+0

모범 사례는 테스트 방법이 실행되는 순서와 관련하여 모든 테스트 방법이 다른 테스트 방법과 완전히 독립적이라는 것입니다. – TrueWill

+0

그러면 Visual Studio에서 OrderedTest 메커니즘을 제공하는 이유는 무엇입니까? –

+1

Microsoft는 단위 테스트를 제대로 이해하지 못했기 때문에. 좋은 소개를 위해 [.NET의 예제를 이용한 단위 테스트의 기술] (http://www.manning.com/osherove/)을 읽어보십시오. – TrueWill

답변

1

두 가지 방법으로 진행할 수 있습니다. 첫째, 각 기능을 독립적으로 테스트하기 위해 3 개의 독립 테스트를 작성할 수 있습니다. 이 테스트 방법의 장점은 문제가 발생할 때보다 세분화 된 것입니다. 예를 들어, 3- 테스트 메소드를 사용하면 2/3 메소드 (예 : save 및 getAll)가 작동 중이고 다른 메소드가 작동하지 않음을 나타내는 결과를 얻을 수 있습니다.

다른 방법은 하나의 테스트에서 세 가지 방법 모두를 수행하고 테스트하는 단일 테스트를 작성하는 것입니다. 이 접근법은 실패한 첫 번째 정보 만 알려주며 충분한 정보가 될 수 있습니다.

이 시나리오는 테스트 실행 중에 데이터베이스를 건드리는 것을 의미하는 것이므로 필자는이를 권장하지 않습니다. 이 경우, 대신에 'get(), 다음 데이터베이스 액세스 코드 (예 : T-SQL) 생성 ...'형식의 테스트를 작성하고 실제로 데이터베이스 쿼리를 실행하지 않습니다. 데이터 베이스.

[TestMethod] 
public void TestGetAll() 
{ 
    Assert.areEqual("SELECT * FROM People", People.CreateSQLForGetAll()); 
} 

이 단위 테스트 기술에 대한 자세한 내용 here.

관련 문제