Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing NUnit:记录测试步骤并在测试失败或错误时断言描述_Unit Testing_Nunit_Nunit 3.0 - Fatal编程技术网

Unit testing NUnit:记录测试步骤并在测试失败或错误时断言描述

Unit testing NUnit:记录测试步骤并在测试失败或错误时断言描述,unit-testing,nunit,nunit-3.0,Unit Testing,Nunit,Nunit 3.0,测试失败时,仅显示评估的预期和实际情况。如果有多个断言,则无法判断哪个断言失败 Expected: True But was: False 关于异常的同样问题:有一个堆栈跟踪,但它没有那么描述性,并且没有告诉我在错误发生之前发生的步骤的任何细节 一种方法是传递消息以断言或添加日志语句(例如,使用TestContext.WriteLine)。但这意味着每次编写断言时,我都需要编写一条唯一的消息,或者对于每个步骤,我都必须添加一条日志语句,这非常耗时,并且在更新测试时需要额外的维护 是否有一种更简

测试失败时,仅显示评估的预期和实际情况。如果有多个断言,则无法判断哪个断言失败

Expected: True
But was: False
关于异常的同样问题:有一个堆栈跟踪,但它没有那么描述性,并且没有告诉我在错误发生之前发生的步骤的任何细节

一种方法是传递消息以断言或添加日志语句(例如,使用
TestContext.WriteLine
)。但这意味着每次编写断言时,我都需要编写一条唯一的消息,或者对于每个步骤,我都必须添加一条日志语句,这非常耗时,并且在更新测试时需要额外的维护

是否有一种更简单的方法来显示此信息,即按原样包含方法调用和断言代码语句

例如,类似这样的内容:

Expected: True
But was: False

On: Assert.That(User.HasOrderInvoice, Is.True)

Steps:
   User.LoginToAccount(UserAccData.TestUserAcc)
   User.AddProductToCart(Data.TestProdData)
   User.PurchaseCart()
   User.GoToOrderHistory()

这里的一个解决方案是使测试更加明确。NUnit有各种各样的限制让您可以这样做,并且可以得到更多有用的失败消息

例如,我将您的上述断言写成:

Assert.That(User, Has.Property(nameof(User.HasOrderInvoice)).True)
这将给出类似以下内容的失败消息:

Expected: Has property 'HasOrderInvoice' equal to true
But was: False
Test User Has Order Invoice
Expected: True
But was: False
我发现这涵盖了我感兴趣的大多数案例。对于无法如此明确表达的任何内容,可以在
Assert.That()
中添加说明,如下所示:

Assert.That(User.HasOrderInvoice, Is.True, "Test User Has Order Invoice")
这会给你一个信息,比如:

Expected: Has property 'HasOrderInvoice' equal to true
But was: False
Test User Has Order Invoice
Expected: True
But was: False

这里的一个解决方案是使测试更加明确。NUnit有各种各样的限制让您可以这样做,并且可以得到更多有用的失败消息

例如,我将您的上述断言写成:

Assert.That(User, Has.Property(nameof(User.HasOrderInvoice)).True)
这将给出类似以下内容的失败消息:

Expected: Has property 'HasOrderInvoice' equal to true
But was: False
Test User Has Order Invoice
Expected: True
But was: False
我发现这涵盖了我感兴趣的大多数案例。对于无法如此明确表达的任何内容,可以在
Assert.That()
中添加说明,如下所示:

Assert.That(User.HasOrderInvoice, Is.True, "Test User Has Order Invoice")
这会给你一个信息,比如:

Expected: Has property 'HasOrderInvoice' equal to true
But was: False
Test User Has Order Invoice
Expected: True
But was: False

它仍然需要一些维护。此外,它并没有解决我的另一个问题——如何记录导致故障点的步骤。我正在寻找一种更简单的方法。我认为将方法调用记录到失败点会给出这样的结果。但是我不想在我的测试中包含任何额外的代码行,因为它需要维护。它仍然需要一些维护。此外,它并没有解决我的另一个问题——如何记录导致故障点的步骤。我正在寻找一种更简单的方法。我认为将方法调用记录到失败点会给出这样的结果。但是我不想在我的测试中包含任何额外的代码行,因为它需要维护。