6

我希望能够将“消息”添加到单元测试中,以便它实际上出现在 NUnit 生成的 TestResult.xml 文件中。例如,这是当前生成的:

<results>
    <test-case name="MyNamespace.Tests.MyTest" executed="True" success="True" time="0.203" asserts="4" />
</results>

我希望能够拥有一个额外的属性(或节点,视情况而定),例如:

<results>
    <test-case name="MyNamespace.Tests.MyTest" executed="True" success="True" time="0.203" asserts="4" message="Tested that some condition was met." />
</results>

这个想法是上面的“消息”将以某种方式在测试方法本身中定义(在我的例子中,在运行时生成)。有没有我想念的地方能做这样的事情?

4

4 回答 4

6

在最近的 NUnit 版本中,您可以执行以下操作:

Assert.AreEqual(250.00, destination.Balance, "some message here");

其中“Some message here”可以是常量消息或在运行时生成并存储在字符串变量中的消息。但是,如果断言失败,这些消息只会出现在输出中。但是,通常您只需要有关失败测试的信息,因此我建议通过添加每个先前的消息来构建一个字符串,然后将该字符串变量用作所有断言中的消息。这使您可以从失败的测试中获得所需的所有信息。

于 2008-12-04T02:10:40.257 回答
2

这可能没有抓住重点,但是如何命名测试,以便它们指示它们测试的内容 - 那么您甚至可能不需要该消息。

如果它被证明是绝对必要的,我认为您需要生成自己的测试运行程序,它会(在我的脑海中)从 TestCase 中读取一个附加属性并将其附加到输出中。

于 2008-09-04T20:03:00.997 回答
0

我在运行时看不到任何可用的东西,但是您可能想要研究几个功能:Description属性和Property属性都将文本添加到 XML 输出文件。不幸的是,它们都是在编译时定义的。

于 2008-10-01T20:15:30.983 回答
0

您可以使用 TestContext 轻松写出您想要的任何消息。这是我的设置方式。

我的每个测试都继承自一个测试库类。这将删除冗余代码。

[TestFixture]
public class TestBase
{

    public IWebDriver driver;

    //[OneTimeSetUp] and [OneTimeTearDown] go here if needed

    [SetUp]
    public void Setup(){
         driver = Shortcuts.SetDriver("my browser");
    }

    [TearDown]
    public void TearDown()
    {
        driver.Quit();
        Comment("@Result: " + TestContext.CurrentContext.Result.Outcome.ToString());
    }

    public void Comment(string _comment)
    {
        TestContext.Out.WriteLine(_comment);
    }
    public void Error(string _error)
    {
        TestContext.Error.WriteLine(_error);
    }

}

您可以看到底部的两个函数在所述 TestContext 中写出任何消息或错误。这也适用于可并行化的测试。

然后我可以使用该父类来设置我的测试,并写入我的控制台。

//Role Management
public class RoleManagementTests : TestBase
{
    [TestCase]
    public void RoleManagement_7777_1()
    {
        Comment("Expected: User has the ability to view all roles in the system.");
        //Test goes here
    }
}

现在您可以使用 NUnit Console Runner 在输出 (Visual Studio) 和 TestResult.xml 中查看结果。

于 2018-02-12T16:47:16.483 回答