I am trying to figure out how to write combinatorial test in MbUnit v3. All of the sample code on the web refers to MbUnit v2, which means using 3 attributes:
- CombinatorialTest
- Factory
- UsingFactories
In MbUnit v3 there is no UsingFactories attribute (and the Factory attribute semantics is widely different and CombinatorialTest attribute is no longer needed). So how can I tell which factory method bind to which parameter in the particular unit test method?
Thanks.
I have found out, with Jeff's help, that the
Factory
attribute can simply be used instead ofUsingFactories
, like so:The test
ATestMethod
will be run on the cartesian multiplication of values generated byXFactory
and those generated byYFactory
.I remember an article from Jeff Brown, the lead developer of Gallio/MbUnit, which talks about dynamic and static factories in MbUnit v3. There is a nice example which describes how to create static and dynamic test factories.
In the other hand, test data factories are easier to create, and provide an interesting alternative to the
[Row]
-based data-driven tests, which only accept primitive values as input (a limitation of C# for the parameters passed to an attribute)Here is an example for MbUnit v3. The data factory is here a property of the test fixture, but it can be a method or a field, which may be located in a nested type or in an external type. This is indeed a very flexible feature :)
I don't see anything similar to
[UsingFactories]
in MbUnit's tests, but you could use[Factory]
+ this combinatorics library to achieve the same result.Try asking on the MbUnit users group for a confirmation on this.