사실과 이론의 차이? -xUnit.net
xUnit.net 및 AutoFixture를 처음 사용합니다.
저는 현재 xUnit.net과 Autofixture에 익숙해지기 위해 "testproject"를 작업 중입니다. 내가 이해하지 못하는 것이 작은 것이 하나 있습니다.
[Fact]
과 의 차이점은 [Theory, AutoMoqData]
무엇입니까?
다음 두 코드가 같은지 알려주시겠습니까? 테스트가 두 가지 모두에서 성공하기 때문에 많은 것이 좋습니다지만 올바른 방법으로 배우고 싶습니다.
[Fact]
public void UpdateVersionWillUpdateCorrectlyInRepository()
{
var fixture = new Fixture().Customize(new AutoMoqCustomization());
var contract = fixture.Create<VersionContract>();
var version = fixture.Create<Version>();
fixture.Freeze<Mock<IContractMapper>>()
.Setup(r => r.Map(contract)).Returns(version);
var repMock = fixture.Freeze<Mock<VersionRepository>>();
var sut = fixture.Create<VersionManagementService>();
sut.UpdateVersion(contract);
repMock.Verify(r => r.UpdateVersion(version));
}
과
[Theory, AutoMoqData]
public void UpdateVersionWillUpdateCorrectlyInRepository(
VersionContract contract,
Version version,
[Frozen]Mock<IContractMapper> mapMock,
[Frozen]Mock<VersionRepository> repMock,
VersionManagementService sut)
{
mapMock.Setup(r => r.Map(contract)).Returns(version);
sut.UpdateVersion(contract);
repMock.Verify(r => r.UpdateVersion(version));
}
차이점이 존재하는 생각하게 만드는 것은 키워드 [Fact]
와 [Theory]
.
나는 [Theory]
키워드가 xUnit.net 프레임에서 워크에 데이터가 어딘가 Autofixture 인에서 온다는 것을 알려 준다고 가정하고 있습니다. 반면이 [Fact]
데이터의 출처에 대한 xUnit의 아무것도 알려야 수동으로 구축 할 수 있습니다.
[AutoMoqData]
속성이 다음과 같다고 가정합니다 .
public class AutoMoqDataAttribute : AutoDataAttribute
{
internal AutoMoqDataAttribute()
: base(new Fixture().Customize(new AutoMoqCustomization()))
{
}
}
그렇다면 예 ,이 두 테스트는 동일합니다.
[Fact]
및 [Theory]
속성은 모두 xUnit.net에 의해 정의됩니다.
이 [Fact]
속성은 xUnit.net 테스트 실행기가 '정상'단위 테스트 (메서드 인수를 사용하지 않는 테스트 메서드)를 사용하는 데 사용됩니다.
[Theory]
다른 한편 속성은 하나 DataAttribute
이상의 인스턴스가 매개 변수화 된 테스트 의 메소드 인수에 대한 값을 제공 할 예상 합니다.
xUnit.net 자체에서 파생 된 다양한 속성을 제공 DataAttribute
: [InlineData]
, [ClassData]
, [PropertyData]
.
AutoFixture는 [AutoData]
속성 을 제공하여 xUnit.net의 확장 성 지점에 연결 합니다. 테스트를 더 선언적으로 만드는 데 사용할 수 있습니다.
참고 URL : https://stackoverflow.com/questions/22373258/difference-between-fact-and-theory-xunit-net
'ProgramingTip' 카테고리의 다른 글
C ++ 17에서 보호 된 생성자에 대한 규칙이 변경 되었습니까? (0) | 2020.12.05 |
---|---|
ThreadPool 대 작업 (0) | 2020.12.05 |
Angular의 빌드 및 실행 방법 (0) | 2020.12.05 |
JavaScript에서 요청 헤더 설정 (0) | 2020.12.05 |
Java 날짜 API (java.util.Date, .Calendar)가 왜 그렇게 엉망입니까? (0) | 2020.12.05 |