slo*_*ife 3 nunit unit-testing
这里只是一些示例代码,但我有一些字符串列表,我想测试我的函数.我不喜欢的部分是当第一个Assert失败时NUnit在每个测试中停止.我想测试每个值并报告每个失败,而不仅仅是第一个失败.我不想为每个字符串写一个新的[Test]函数.
有没有办法做到这一点?
using NUnit.Framework;
using System.Collections.Generic;
namespace Examples
{
[TestFixture]
public class ExampleTests
{
private List<string> validStrings = new List<string> { "Valid1", "valid2", "valid3", "Valid4" };
private List<string> invalidStrings = new List<string> { "Invalid1", "invalid2", "invalid3", "" };
[Test]
public void TestValidStrings()
{
foreach (var item in validStrings)
{
Assert.IsTrue(item.Contains("valid"), item);
}
}
[Test]
public void TestInvalidStrings()
{
foreach (var item in invalidStrings)
{
Assert.IsFalse(item.Contains("invalid"), item);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
使用该[TestCaseSource]属性指定要传递到(现在参数化)测试方法的值.
我们该用大量的野田的时间来测试很多情况下具有不同文化背景和字符串.
这是你的例子,转换为使用它:
using NUnit.Framework;
using System.Collections.Generic;
// Namespace removed for brevity
[TestFixture]
public class ExampleTests
{
private List<string> validStrings = new List<string>
{ "Valid1", "valid2", "valid3", "Valid4" };
private List<string> invalidStrings = new List<string>
{ "Invalid1", "invalid2", "invalid3", "" };
[Test]
[TestCaseSource("validStrings")]
public void TestValidStrings(string item)
{
Assert.IsTrue(item.Contains("valid"), item);
}
[Test]
[TestCaseSource("invalidStrings")]
public void TestInvalidStrings(string item)
{
Assert.IsFalse(item.Contains("invalid"), item);
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,另一个选项是使用[TestCase],这意味着您不需要为测试数据单独的变量.
| 归档时间: |
|
| 查看次数: |
2338 次 |
| 最近记录: |