Unit testing 如何让NUnit测试列表中的所有值,而不仅仅是第一次失败
这里只是一些示例代码,但我有一些字符串列表,我想测试我的函数。我不喜欢的是,当第一个断言失败时,NUnit在每个测试中都会停止。我想测试每个值并报告每个失败,而不仅仅是第一个。不过,我不想为每个字符串编写新的[Test]函数 有办法做到这一点吗Unit testing 如何让NUnit测试列表中的所有值,而不仅仅是第一次失败,unit-testing,nunit,Unit Testing,Nunit,这里只是一些示例代码,但我有一些字符串列表,我想测试我的函数。我不喜欢的是,当第一个断言失败时,NUnit在每个测试中都会停止。我想测试每个值并报告每个失败,而不仅仅是第一个。不过,我不想为每个字符串编写新的[Test]函数 有办法做到这一点吗 using NUnit.Framework; using System.Collections.Generic; namespace Examples { [TestFixture] public class ExampleTests
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);
}
}
}
}
使用NUnit.Framework;
使用System.Collections.Generic;
名称空间示例
{
[测试夹具]
公共类示例测试
{
私有列表validstring=新列表{“Valid1”、“valid2”、“valid3”、“Valid4”};
私有列表invalidStrings=新列表{“Invalid1”、“invalid2”、“invalid3”和“\”;
[测试]
public void TestValidStrings()
{
foreach(validStrings中的var项目)
{
Assert.IsTrue(item.Contains(“有效”),item);
}
}
[测试]
公共无效测试验证字符串()
{
foreach(InvalidString中的var项)
{
Assert.IsFalse(item.Contains(“无效”),item);
}
}
}
}
使用该属性指定要传递到(现在已参数化)测试方法中的值
我们在中经常使用它来测试具有不同区域性和字符串的许多案例
下面是您的示例,转换为使用它:
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);
}
}
使用NUnit.Framework;
使用System.Collections.Generic;
//为简洁起见,已删除命名空间
[测试夹具]
公共类示例测试
{
私有列表validStrings=新列表
{“Valid1”、“valid2”、“valid3”、“Valid4”};
私有列表InvalidString=新列表
{“Invalid1”、“invalid2”、“invalid3”、“Invalid1”;
[测试]
[TestCaseSource(“validStrings”)]
公共void TestValidString(字符串项)
{
Assert.IsTrue(item.Contains(“有效”),item);
}
[测试]
[TestCaseSource(“InvalidString”)]
公共无效测试验证字符串(字符串项)
{
Assert.IsFalse(item.Contains(“无效”),item);
}
}
请注意,另一个选项是使用,这意味着您的测试数据不需要单独的变量。我使用的是NUnit 2.4,因此我需要更新到2.5/2.6才能获得此值。非常感谢。