2

NUnit c# アプリケーションでテスト フィクスチャを注文する必要があります。このページから順序付けられたテスト メソッドを実行する方法の例があり、サンプル アプリケーションで提供されているのと同じメソッドを使用して、テスト フィクスチャに同じロジックを実装しようとしました。このアプリケーションでは、テスト フィクスチャはクラスごとに分けられ、各テスト フィクスチャには 1 つのテスト メソッドがあります。私たちの最新の試みは、次のメソッドを持つ 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);
            }
        }
    }
}

このメソッドは、実行されるテスト メソッドを順番に返すことになっています。ただし、テストメソッドを順番に返しても、順番に実行できません。

アプリの例とまったく同じロジックを使用しています。次のように、すべてのテスト メソッドに配置される Attribute から継承する、orderedTestAttrribute クラス:

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

1 つの testFixture と 1 つのテスト クラスを別々に持つという現在の実装を変更せずに、どうすればこれを機能させることができるか、誰にもわかりませんか?

4

1 に答える 1