gpt4 book ai didi

unit-testing - NUnit 中是否有 "soft"断言?

转载 作者:行者123 更新时间:2023-12-04 05:16:01 24 4
gpt4 key购买 nike

NUnit 中有“软断言”这样的概念吗?如果可以,我该如何使用它?

我所说的“软断言”的背景和细节:

在一组验收测试中,我想验证是否正确填写了表格。目前,我使用以下规范流程步骤执行此操作:

Then The new note form is filled out as follows
| Label | Value |
| First Name | Jon |
| Last name | Skeet |
| Title | Cool Kat |

它是这样实现的:

[Then(@"The new note form is filled out as follows")]
public void ThenTheNewNoteFormIsFilledOutAsFollows(Table table)
{
foreach (var row in table.Rows)
{
var name = row["Label"];
var value = row["Value"];

switch (name)
{
case "First Name":
// Page is part of our automation framework - Page.FirstName is
// simply an abstraction over getting the value of the
// <input name="FirstName" />
Assert.That(Page.FirstName, Is.EqualTo(value),
"Incorrect first name: Expected {0}, was {1}",
value, Page.FirstName);
continue;
case "Last Name":
Assert.That(Page.LastName, Is.EqualTo(value),
"Incorrect first name: Expected {0}, was {1}",
value, Page.LastName);
continue;
// similar cases for the other properties
}
}
}

这是有效的,因为它为我们提供了正确的测试结果(通过/未通过),并带有显示问题所在的错误消息。然而,因为当 Assert 失败时测试执行被中止,所以只报告第一个失败的表单值;比方说,如果表单是空的,只有上面示例中的 First Name 会被报告丢失,我必须重新运行测试才能看到 Last Name 也不见了。

由于这些是浏览器自动化测试,运行时间相当长,如果测试失败报告所有不正确的表单元素,而不仅仅是第一个元素,那就太好了。

NUnit 可以吗?


对于想要反对“不要这样做 - 单元测试应该只测试一件事”的读者:

是的,我知道 - 但你的论点是无效的,因为这不是单元测试。这是一个验收测试,测试整个堆栈是否正常工作。我们碰巧使用 NUnit 来设计和执行这些测试,但这并不能使它们成为单元测试。

最佳答案

关于unit-testing - NUnit 中是否有 "soft"断言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25872933/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com