Autofixture: AutoData 속성에 μ˜ν•΄ μƒμ„±λœ 섀비에 λŒ€ν•œ μ•‘μ„ΈμŠ€.

에 λ§Œλ“  2018λ…„ 04μ›” 25일  Β·  7μ½”λ©˜νŠΈ  Β·  좜처: AutoFixture/AutoFixture

μ•ˆλ…•ν•˜μ„Έμš”,
μ§€κΈˆμ€ 이와 같은 κ³ μ • μž₯μΉ˜μ—λ§Œ μ•‘μ„ΈμŠ€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

[Theory, AutoData]
public void Dummy(string dummy)
{
    MethodBase method = MethodBase.GetCurrentMethod();
    IFixture fixture = method.GetCustomAttribute<AutoDataAttribute>().Fixture;


    Assert.Equal(dummy, dummy);
}

그리고 'AutoDataAttribute.Fixture'κ°€ 더 이상 μ‚¬μš©λ˜μ§€ μ•ŠλŠ”λ‹€λŠ” κ²½κ³ λ₯Ό λ°›μ•˜μŠ΅λ‹ˆλ‹€.

AutoData μ†μ„±μ—μ„œ μƒμ„±λœ μ‘°λͺ…기에 μ ‘κ·Όν•˜λŠ” 더 쒋은 방법이 μžˆμŠ΅λ‹ˆκΉŒ? λ§€κ°œλ³€μˆ˜μ™€ μˆ˜λ™ 생성 및 μ£Όμž…μ„ ν˜Όν•©ν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€.
감사 ν•΄μš”

question

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

예, 정말 더 λ‚˜μ€ λ°©λ²•μž…λ‹ˆλ‹€.

이것을 AutoData μœ„ν‚€μ— 넣을 수 μžˆμŠ΅λ‹ˆκΉŒ?
λ‚˜λŠ” μ΄κ²ƒμ„ν•˜λŠ” 방법을 μ°ΎκΈ° μœ„ν•΄ λͺ¨λ“  곳을 κ²€μƒ‰ν–ˆμŠ΅λ‹ˆλ‹€.
IOC μ»¨ν…Œμ΄λ„ˆκ°€ IFixtureλ₯Ό λ“±λ‘ν–ˆλ‹€κ³  μƒκ°ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

정말 κ°μ‚¬ν•©λ‹ˆλ‹€!

λͺ¨λ“  7 λŒ“κΈ€

μ•ˆλ…•ν•˜μ„Έμš”,

λ¬Όλ‘  IFixture μΈμŠ€ν„΄μŠ€λ₯Ό ν•΄κ²°ν•˜λ„λ‘ κΈ°λ³Έ κ³ μ • μž₯μΉ˜μ— μš”μ²­ν•˜λ©΄ 자체λ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.

c# [Theory, AutoData] public void Dummy(string dummy, IFixture fixture) { }

당신을 μœ„ν•΄ μž‘λ™ν•©λ‹ˆκΉŒ? :λˆˆμ§“:

예, 정말 더 λ‚˜μ€ λ°©λ²•μž…λ‹ˆλ‹€.

이것을 AutoData μœ„ν‚€μ— 넣을 수 μžˆμŠ΅λ‹ˆκΉŒ?
λ‚˜λŠ” μ΄κ²ƒμ„ν•˜λŠ” 방법을 μ°ΎκΈ° μœ„ν•΄ λͺ¨λ“  곳을 κ²€μƒ‰ν–ˆμŠ΅λ‹ˆλ‹€.
IOC μ»¨ν…Œμ΄λ„ˆκ°€ IFixtureλ₯Ό λ“±λ‘ν–ˆλ‹€κ³  μƒκ°ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

정말 κ°μ‚¬ν•©λ‹ˆλ‹€!

μ™œ IoC에 μ‘°λͺ…κΈ°λ₯Ό λ“±λ‘ν•˜λ €κ³  ν•©λ‹ˆκΉŒ? 제 κ²½ν—˜μƒ μ ˆλŒ€ ν•„μš”ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€

주둜 λ³΅μž‘ν•œ 반볡 μΈν„°νŽ˜μ΄μŠ€ 섀정에 λŒ€ν•œ ν…ŒμŠ€νŠΈ 방법 λ§€κ°œλ³€μˆ˜λ₯Ό μ΅œμ†Œν™”ν•©λ‹ˆλ‹€.

[Theory, AutoMoqData]
public void Dummy(IFixture fixture, [Frozen]Mock<IComplexInterfaceWith30SubInterfaces> needed, TestClass sut)
{
    //This will add interfaces setups for needed by retrieving them from the IoC container or by property access.
    SetupInterfaces(fixture, needed);
    //We can now use needed injected in sut.
}

더 κ°„λ‹¨ν•œ μ˜ˆκ°€ μžˆμŠ΅λ‹ˆλ‹€

λ‚˜λŠ” 당신이 이것을 μ„ ν˜Έν•©λ‹ˆλ‹€

[Theory, AutoMoqData]
public void Dummy(IFixture fixture)
{
    Assert.Equal(String.Empty, String.Empty);
}

이것에

[Fact]
public void Dummy2()
{
    IFixture fixture = new Fixture().Customize(new AutoMoqCustomization());

    Assert.Equal(String.Empty, String.Empty);
}

주둜 λ³΅μž‘ν•œ 반볡 μΈν„°νŽ˜μ΄μŠ€ 섀정에 λŒ€ν•œ ν…ŒμŠ€νŠΈ 방법 λ§€κ°œλ³€μˆ˜λ₯Ό μ΅œμ†Œν™”ν•©λ‹ˆλ‹€.

λ™μ˜ν•©λ‹ˆλ‹€. ν…ŒμŠ€νŠΈμ—μ„œ λΉ„μŠ·ν•œ μ‚¬μš©λ²•μ΄ μžˆμŠ΅λ‹ˆλ‹€. μœ μΌν•œ 차이점은 보쑰 반볡 λ©”μ„œλ“œμ— When() 접두사λ₯Ό μΆ”κ°€ν•˜λŠ” 것을 μ„ ν˜Έν•˜λ―€λ‘œ ν…ŒμŠ€νŠΈλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

c# public void Test([Frozen] IProvider provider, ISut sut, IFixture fixture) { // arrange WhenProviderReturnsOnlyInitializedEntities(provider, fixture); ..... }

ν•˜μ§€λ§Œ κΈ°λ³Έ μ•„μ΄λ””μ–΄λŠ” μ—¬μ „νžˆ λ™μΌν•©λ‹ˆλ‹€ πŸ˜‰

더 이상 μž‘μ—…μ΄ ν•„μš”ν•˜μ§€ μ•ŠμœΌλ―€λ‘œ 이 ν•­λͺ©μ„ λ‹«μŠ΅λ‹ˆλ‹€.

이것을 AutoData μœ„ν‚€μ— 넣을 수 μžˆμŠ΅λ‹ˆκΉŒ?

@malylemire1 μ•žμœΌλ‘œ μ–΄λ”˜κ°€μ— λ¬Έμ„œ μ‚¬μ΄νŠΈλ₯Ό λ§Œλ“€ μ˜ˆμ •μž…λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 이 μƒ˜ν”Œμ„ 우리 μœ„ν‚€μ— 자유둭게 μΆ”κ°€ν•˜μ„Έμš” πŸ˜…

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰