0

次のシグネチャを持つテスト メソッドがあります。

public void TheBigTest(MyClass data, decimal result)
{

これを XUnit 2.1 で実行したいと思います。CalculationData クラスをすべてセットアップしましたが、2 番目のパラメーターを削除すると機能します。しかし、次のようにして、期待される結果を2番目のパラメーターとして渡そうとすると:

[Theory, ClassData(typeof(CalculationData)), InlineData(8893)]

うまくいきません。テストは次のエラーで失敗します。

テスト メソッドは 2 つのパラメーター値を想定していましたが、1 つのパラメーター値が指定されました。

何か案は?

4

1 に答える 1

1

属性で指定されたクラスはClassData、最初のパラメーターだけでなく、テスト メソッドのすべてのパラメーターを返す列挙可能なクラスである必要があります。

したがって、あなたの例では、次のようなものが必要になります。

public class CalculationData : IEnumerable<object[]>
{
    IEnumerable<object[]> parameters = new List<object[]>()
    {
        new object[] { new MyClass(), 8893.0m },
        new object[] { new MyClass(), 1234.0m },
        // ... other data...
    };

    public IEnumerator<object[]> GetEnumerator()
    {
        return parameters.GetEnumerator();
    }

    IEnumerator IEnumerable.GetEnumerator()
    {
        return GetEnumerator();
    }
}

その後、クラスにパラメーターを追加しMyClassて、テスト データを拡張できます。

于 2015-11-02T13:22:40.173 に答える