2016-05-11 53 views
8

Uso intensamente le teorie AutoData di Autofixture per la creazione di dati e mock. Tuttavia questo mi impedisce di usare gli attributi InlineData di XUnit per inviare una serie di dati diversi per i miei test.Come combinare AutoDataAttribute con InlineData

Così sto fondamentalmente alla ricerca di qualcosa di simile:

[Theory, AutoMoqDataAttribute] 
[InlineData(3,4)] 
[InlineData(33,44)] 
[InlineData(13,14)] 
public void SomeUnitTest([Frozen]Mock<ISomeInterface> theInterface, MySut sut, int DataFrom, int OtherData) 
{ 
    // actual test omitted 
} 

è qualcosa di simile possibile?

+1

Vedere anche [AutoFixture, xUnit.net e Auto Mocking] (http://blog.nikosbaxevanis.com/2012/07/31/autofixture-xunit-net-and-auto-mocking/). –

risposta

8

Dovrete creare il proprio InlineAutoMoqDataAttribute, simile a questo:

public class InlineAutoMoqDataAttribute : InlineAutoDataAttribute 
{ 
    public InlineAutoMoqDataAttribute(params object[] objects) : base(new AutoMoqDataAttribute(), objects) { } 
} 

e devi usare in questo modo:

[Theory] 
[InlineAutoMoqData(3,4)] 
[InlineAutoMoqData(33,44)] 
[InlineAutoMoqData(13,14)] 
public void SomeUnitTest(int DataFrom, int OtherData, [Frozen]Mock<ISomeInterface> theInterface, MySut sut) 
{ 
    // actual test omitted 
} 

Nota che i dati inline, gli INT in questo caso, devono essere i primi parametri del metodo di prova. Tutti gli altri parametri saranno forniti da AutoFixture.