2017-11-22 8 views
0

TestCaseSourceとカスタム派生プロパティ属性を使用するともともと発生しました。NUnitテストプロパティは、パラメータ化されたテストではアクセスできません

[TestFixture] 
public class SomeTestFixture 
{ 
    [Test, Property("SomeProperty", "foo")] 
    public void RegularTest() 
    { 
    } 

    [Test, Property("SomeProperty", "foo"), TestCase(0)] 
    public void ParametrizedTest(int x) 
    { 
    } 

    [TearDown] 
    public void TearDown() 
    { 
     var properties = TestContext.CurrentContext.Test.Properties; 
    } 
} 

propertiesは「SomeProperty」があります:ここでは、蒸留例ですRegularTest後解体時に「foo」を、しかし、彼らはParametrizedTest後に空になります。それはなぜでしょうか、反射を使用する以外はどうすれば回避できますか?

答えて

2

に設定されたプロパティーがに設定されていることは、個々のテストケースを含むスイートに適用されるNUnitの機能です。したがって、テストケースではなくスイートのプロパティにする必要がないかぎり、そのような方法でプロパティを適用するべきではありません。

これはもちろん、設計の欠陥かもしれません。少なくとも、それはユーザーにとって混乱します。

TestCaseAttributeでテストケースを指定すると、説明のようないくつかのよく知られたプロパティを指定することはできますが、新しいプロパティを追加することはできません。この問題を回避するには、TestCaseSourceAttributeを使用してケースを指定し、ケースごとにTestCaseDataの個々のインスタンスを指定します。 TestCaseDataクラスでは、それぞれのケースでプロパティを設定できます。

確かに、これはあまり便利ではありませんが、回避策です。

関連する問題