In a recent post, I explained how to create a custom data source attribute for MbUnit. But before using it, it's certainly safer to test it. The method described below is the same as the one which is applied in the MbUnit test project itself. It is widely used to verify that the built-in attributes of MbUnit behave as expected. The principle is the following:
Here is a simple example that shows how to test the
- Create a nested explicit sample test fixture which consumes the attribute under test. It must be marked as explicit, so that it will not be taken in account by the primary test runner.
- Create a regular unit test which launches an inner isolated test runner, and runs the sample fixture.
- Retrieve the output of the inner test runner and assert over the test log.
%gallio_install_path%\sdk
) contains a couple of handy helper classes for that very purpose. It provides in particular a BaseTestWithSampleRunner
class that you can use as a base class of you main fixture, and a [RunSample]
attribute to easily target the nested explicit sample fixtures.Here is a simple example that shows how to test the
[BooleanData]
attribute that we did create last time.[TestFixture, RunSample(typeof(SampleFixture))]
public class BooleanDataAttributeTest : BaseTestWithSampleRunner
{
[Test]
public void Test()
{
var runs = GetTestStepRuns(typeof(SampleFixture), "Test");
var logs = runs.Select(GetLog).Where(x => x.Length > 0);
Assert.AreElementsEqualIgnoringOrder(new[] { "value=True", "value=False" }, logs);
}
[TestFixture, Explicit]
internal class SampleFixture
{
[Test]
public void Test([BooleanData] bool value)
{
TestLog.Write("value={0}", value);
}
}
}
Want to know more? Be sure to read this page in the Gallio wiki.
No comments:
Post a Comment