2012-07-10 5 views
2

런타임시 NUnit에 추가 테스트를 동적으로 추가 할 수 있는지 알아 보려면 구성 파일을 기반으로 할 계획입니다. 내 테스트는 날짜와 클라이언트를 포함하여 특정 값 집합에 대해 dev 시스템과 테스트 시스템과 같은 두 소스의 데이터를 비교하도록 설계되었습니다.이 때문에 데이터를 하드 코딩 할 필요가 없습니다. 다른 테스트의 경우). 현재 테스트 할 값 (예 : 다른 날짜 및 클라이언트)의 선택 세트에 대해 다음과 같이 내 소스 코드에 하드 코딩 된 많은 테스트를 설정했습니다.구성 파일을 기반으로 새로운 NUnit 테스트를 프로그래밍 방식으로 만듭니다.

[Test] 
public void ClientName_Janurary_1_2012() 
{ 
    RunTest("Client Name", new DateTime(2012, 1, 1)); 
} 

그러나, 그 소스 코드를 (그 기간의 각각에 대한 [Test] 수단을 추가하도록 변경 될 필요가 정상적으로 이러한 시험 방법은 오직 하나 줄 것이라고 추가 날짜 테스트해야한다는 뜻 날짜를 매개 변수로 사용하는 다른 메서드 호출)

런타임시 NUnit에 나타나는 테스트를 동적으로 생성 할 수 있습니까? 따라서 구성 파일을 변경하여 테스트를 추가 할 수 있습니까?

+0

(용어에 대한 주제와 관련없는 설명 : NUnit을 사용하더라도 단위 테스트가 아닙니다.) – stakx

답변

4

다른 사람들이 말했듯이, 당신이 정말로 묻고있는 것은 새로운 테스트 데이터을 런타임에 사용하는 방법입니다.

기본적으로 TestCaseSource 속성을 사용하여 NUnit에서이 작업을 수행 할 수 있습니다. 속성을 설정 파일을 읽고 원하는 출력에 매핑하는 함수를 가리 키기 만하면됩니다. 테스트 데이터의 각 포인트는 해당 테스트 메소드의 별도 "하위"로 표시됩니다.

+0

감사합니다. 호기심에서이 방법으로 나무 구조를 만들 수 있습니까? 즉, 트리 구조는 단순히 가지고 있고, TestCaseSource 정확히 내가 찾고 있던했다. – joshhendo

+0

@joshhendo, NUnit 2.5에서 중첩 된 테스트 케이스를 만들 수 있다고는 생각하지 않지만 전체 공개, 실제로 TestCaseSource를 직접 사용한 적이 없다 :) 전에 그것에 대해 읽었을 것이고 ValueSource를 사용하는 것으로 끝났다. 유사하게 (입력 전용). – harpo

+0

테스트 네임을 지정할 수있는 것은 괜찮습니다. (그리고 알파벳 순서로 알 수 있기 때문에) 정확하게 작동하고 싶습니다. – joshhendo

4

데이터가 변경 될 때마다 새 테스트를 생성하는 대신, 테스트 용 입력으로 파일을 사용하는 단일 매개 변수화 테스트 및 NUnit 확장을 작성하는 것이 좋습니다. 아마도 NUnit RowTest과 같은 것을 시작점으로 사용할 수 있습니다.

관련 문제