나는 [SetUp]을 사용하는 것이 확실하다는 것을 알고있다. 그러나 결과를 얻는 코드가 예외를 던질 수있는 가능성이 매우 높다. 테스트를 원한다.N 단위 테스트의 결과를 다른 테스트에서 재사용 할 수 있습니까?
면책 조항 앞에서 우리는 "true"단위 테스트를 수행하지 않습니다. 우리가 만들고있는 것은 통합 테스트로 가장 잘 설명 될 수 있습니다. 디자인이 완료되었습니다. 유닛 테스트를 앞당겨서 만들지 못했고 현재 만들 수있는 리소스가 없습니다.하지만 우리는 더 큰 크기의 자동 커버리지를 얻으려고합니다. 기능의 덩어리.
이러한 청크 중 하나는 외부 데이터베이스의 데이터를 집계하고 내부 데이터베이스의 여러 테이블에 저장하는 다양한 참조가있는 4 개의 복잡한 개체를 만드는 기능입니다. 우리는 이미 주요 집계 함수를 리팩터링하여 집계 함수가 삽입 작업을 수행하기 전에 래퍼 클래스에있는 객체를 반환했습니다. 이제는 호출자가 삽입 작업을 수행하므로 데이터를 데이터베이스에서 자동으로 가져 오지 않고 자동으로 데이터의 유효성을 검사하는 자동화 된 테스트를 작성합니다.
문제는 NUnit에서이 집계 함수를 테스트하려고합니다. 더 세분화 할 수는 없습니다. 그러나 우리는 4 개의 객체 각각을 개별적으로 검증 할뿐만 아니라 그 함수가 어떤 예외도 발생시키지 않는지 확인하고자합니다.
함수는 작은 세트로 실행하는 데 꽤 많은 시간이 걸리므로 각 객체를 테스트하기 위해 똑같은 작업을 4 번 다시 실행하지 않는 것이 좋습니다.
이상적으로는 하나의 복잡한 개체 -> 복잡한 개체 -> 등등에 대한 유효성 검사 결과가 오류없이 피드로 완료되는지 확인하는 테스트를 실행하고 싶습니다. NUnit으로 가능합니까? 아니면 우리가 사용할 수있는 또 다른 패러다임이 있습니까?
최악의 경우, 동일한 데이터 세트에서 4 회 집계를 실행한다고 가정합니다.
설치 프로그램을 사용할 때의 문제점은 무엇입니까? 설치 프로그램에 예외가 있으면 테스트가 실행되지 않고 XYZ 예외로 인해 설정이 실패했음을 알리는 오류가 표시됩니다. 객체를 생성하는 데 비용이 많이 든다면 다른 테스트를 사용할 필드에 객체를 캐시 할 것입니다. –
우리는 이미 N 유닛으로 빠르고 느슨하게 플레이하고 있지만, [Setup]을 "테스트"해서는 안된다는 것이 이해되었습니다. – SmashCode
값을 보유 할 테스트 클래스에 클래스 레벨 변수를 작성하십시오. 면책 조항으로 인해 테스트가 실행되는 순서에 따라 달라 지므로 정상적인 테스트 시나리오에서는 테스트가 실행되지 않고 단위 테스트가 독립적이어야하며 실행에 의존하지 않아야합니다. 만약 내가 당신의 경우 나는 이전 테스트가 실제로 실행되었고 Assert를 던지기 쉽게 테스트 할 수 있도록 변수를 nullable로 만들 것입니다. Assert.Inclusclusive not if. – Kevin