저는 XUnit의 이론과 결합 된 AutoFixture의 힘을 정말 고맙게 생각합니다. 나는 최근에 encapsulating customizations의 사용을 채택하여 속성을 통해 테스트에 제공했습니다.AutoFixture를 위해 사용자 정의 이론 데이터 속성이 생성하는 조명기를 어떻게 수정할 수 있습니까?
가끔 내 테스트를 실행하기 위해 일회성 시나리오가 필요합니다. 위와 같이 AutoDomainDataAttribute를 사용할 때 IFixture를 요청할 수 있으며 특성으로 생성 된 동일한 인스턴스를 가져올 수 있습니까?
필자의 시나리오에서는 콜렉션 등에 기본적으로 MultipleCustomization을 사용하고 있습니다.하지만이 경우에는 하나의 항목 만 SUT 생성자에게 보내야합니다. 그래서, 난 그렇게처럼 내 시험 방법을 정의했습니다 :
[Theory, AutoDomainData]
public void SomeTest(IFixture fixture) {
fixture.RepeatCount = 1;
var sut = fixture.CreateAnonymous<Product>();
...
}
을 익명의 제품을 만들 때 불행하게도, 나는 예외를 받고 있어요. 이러한 속성을 가진 메서드 매개 변수로 Product를 요청하면 다른 테스트도 제대로 작동합니다. 필자의 FixDure 매개 변수가 내 AutoDomainDataAttribute에 의해 생성 된 매개 변수와 동일하기를 바라는이 특별한 경우에만 문제가됩니다.
제품의 생성자는 AutoDomainData를 통해 현재 위치에있는 사용자 정의로 인해 일반적으로 3 개의 항목으로 채워지는 IEnumerable을 예상합니다. 현재, 내 DomainCustomization은 MultipleCustomization과 AutMoqCustomization으로 구성된 CompositeCustomization입니다.
예외 : "InvalidCastException : 'Castle.Proxies.ObjectProxy'유형의 개체를 'Product'유형으로 캐스팅 할 수 없습니다." 당신은 속성의 활성화와 동일한 고정 장치 인스턴스가 필요한 경우
감사합니다. 나는 즉시 여기에 게시 한 후 명령 테스트 방식으로 전환했다. 대체 방법을 아는 것이 좋습니다. 마지막으로, 제 특정 테스트는 마지막 카테고리를 제품에서 제거 할 수 없도록 보장합니다 (적어도 하나는 있어야 함). 이것은'RepeatCount'를 제어하는 데 필요한 유일한 시간입니다. 다시 한 번 감사드립니다! – ventaur
'카테고리를 제거 할 수 없습니까?Count() - 1' 항목을 먼저 테스트 설정의 일부로 먼저 선택하고 왼쪽으로 하나만 제거하면 마지막 항목을 제거 할 수 없습니다. –
네, 그렇게 생각합니다. 우리 프로그래머들은 때로는 복잡한 일로 고통을 겪습니다. :-) – ventaur