使用NUnit按顺序运行TestFixtures

时间:2015-07-08 00:00:14

标签: c# nunit automated-tests integration-testing ordered-test

我需要在我的NUnit c#应用程序中订购测试装置。我有一个关于如何从this page运行有序测试方法的示例,并且我尝试使用示例应用程序中提供的相同方法为测试装置实现相同的逻辑。在我们的申请中 每个类别分开一个测试夹具,每个测试夹具有一个测试方法。我们最近的尝试是使用一个父测试夹具,它继承自一个名为OrderedTestFixture的类(与示例中相同),它具有以下方法:

public IEnumerable<NUnit.Framework.TestCaseData> TestSource
{
    get
    {
        var assembly = Assembly.GetExecutingAssembly();

        foreach (var order in methods.Keys.OrderBy(x => x))
        {
            foreach (var methodInfo in methods[order])
            {
                MethodInfo info = methodInfo;
                yield return new NUnit.Framework.TestCaseData(
                    new TestStructure
                    {
                        Test = () =>
                        {
                            object classInstance = Activator.CreateInstance(info.DeclaringType, null);
                            info.Invoke(classInstance, null);
                        }
                    }).SetName(methodInfo.Name);
            }
        }
    }
}

该方法应该按顺序返回将要执行的测试方法。但是,即使它按顺序返回测试方法,也无法按顺序执行它们。

我使用与App示例中相同的逻辑。从Attribute继承的orderedTestAttrribute类,将放置在每个测试方法中,如下所示:

[Test]
[OrderedTest(1)]
[BeforeAfterTest]
public void TestMethod() { }

有没有人知道如何在不改变我目前实现的一个testFixture与一个测试类分开的情况下完成这项工作?

1 个答案:

答案 0 :(得分:1)

好的,如果我理解正确,你想要在多个TestFixtures之间订购测试。因此,在这种情况下,您不希望使用OrderedTestFixture,因为这是专门为不在多个灯具上运行测试而创建的。如果你从前面的问题看我的GitHub repo,你会想要遵循Example 2代码。请注意,在这种情况下,您应该只使用OrderedTest属性 - 使用Test将抛出所有内容,因为它将由NUnit随机调度,而不是通过使用TestCaseData进行排序。有关详细信息,请参阅my blog post

希望有所帮助。

相关问题