如果为TestFixture级别设置了“Property”属性,是否有可能获得Nunit“Property”属性值

时间:2014-09-08 13:20:20

标签: c# testing nunit

这是我的TestFixture类:

namespace TestApplication.Tests
{
    [TestFixture]
    [Property("type","smoke")]
    public class LoginFixture
    {
        [Test]
        [Property("role","user")]
        public void can_login_with_valid_credentials() 
        {
            Console.WriteLine("Test")
        }
    }
}

如您所见,我为测试和测试混合级别设置了Nunit“属性”属性。

很容易从测试级别获取“属性”值:

var test = TestContext.CurrentContext.Test.Properties["role"]

但是不明白如何从TestFixture级别获取“Property”值。这不起作用

TestContext.CurrentContext.Test.Properties["type"]

1 个答案:

答案 0 :(得分:3)

您需要分别跟踪TestFixture上下文,这可以使用[TestFixtureSetup]方法完成:

[TestFixture]
[Property("type", "smoke")]
public class ContextText
{
    private TestContext _fixtureContext;

    [TestFixtureSetUp]
    public void TestFixtureSetup()
    {
        _fixtureContext = TestContext.CurrentContext;
    }

    [TestCase]
    public void TestFixtureContextTest()
    {
        // This succeeds
        Assert.That(_fixtureContext.Test.Properties["type"], Is.EqualTo("smoke"));
    }

    [TestCase]
    public void TestCaseContextTest()
    {
        // This fails
        Assert.That(TestContext.CurrentContext.Test.Properties["type"], Is.EqualTo("smoke"));
    }
}

上面的示例类似于NUnit 2.6.3源代码中包含的单元测试。对于实际的NUnit单元测试,请参阅downloadable source code中的TestContextTests.cs。