NUnit的支持功能,您可以为一个单元测试指定一组数据输入要运行多次。
[RowTest]
[Row(1001,1,2,3)]
[Row(1,1001,2,3)]
[Row(1,2,1001,3)]
public void SumTests(int x, int y, int z, int expected)
{
...
}
什么是完成使用MSTest的这种相同类型的事情的最好方法? 我找不到类似的一组属性。
NUnit的支持功能,您可以为一个单元测试指定一组数据输入要运行多次。
[RowTest]
[Row(1001,1,2,3)]
[Row(1,1001,2,3)]
[Row(1,2,1001,3)]
public void SumTests(int x, int y, int z, int expected)
{
...
}
什么是完成使用MSTest的这种相同类型的事情的最好方法? 我找不到类似的一组属性。
请问这帮助?
这一周,我加入了一些单元测试,由TFS管理的项目,所以我决定用可用VS2008的“核心”的单元测试框架,遗憾的是它不支持RowTests。 但它有一个叫做数据驱动的单元测试了类似的功能。 用这种方法这是一个更复杂一点实行“简单” RowTest的场景,但它也可以实现更复杂的。
对于使用MSTest2那些DataRow的+ DataTestMethod可用来做到这一点:
[DataRow(Enum.Item1, "Name1", 123)]
[DataRow(Enum.Item2, "Name2", 123)]
[DataRow(Enum.Item3, "Name3", 456)]
[DataTestMethod]
public void FooTest(EnumType item, string name, string number)
{
var response = ExecuteYourCode(item, name, number);
Assert.AreEqual(item, response.item);
}
更多关于它在这里
您可以通过如下所示写一个小扩展MSTEST有这种能力。
http://blogs.msdn.com/b/vstsqualitytools/archive/2009/09/04/extending-the-visual-studio-unit-test-type-part-2.aspx
实际上,参数化单元测试(PUT)是单元测试的自然推广。 和微软研究院有一个名为Pex的项目,将自动生成测试下(CUT)为您的类的PUT。 PEX是一个自动测试输入生成工具 。 而是自己准备测试数据,该Pex的工具会发现对 CUT的参数感兴趣的投入 ,并相应产生的单元测试用例。 请查看这里 。
我的回答是similuar为@奥斯卡E-fraxedas-TORMO之一。
可以从具有从1到100种的试验方法内侧和提供在派生类中的所有的测试逻辑生成的类的一个子。 在下面的例子:
[TestClass]
public class Ha_ha_ha_Test: MsTestRows.Rows.TestRows_42<string>
{
public override void TestMethod(string dataRow, int rowNumber)
{
Console.WriteLine(dataRow);
Assert.IsFalse(dataRow.Contains("3"));
}
public override string GetNextDataRow(int rowNumber)
{
return "data" + rowNumber;
}
}
类Ha_ha_ha_Test
将包含42
产生的行(方法)。 对于每个该行的,自定义方法GetNextDataRow
将为了提供所需的测试数据被调用。
https://github.com/dzhariy/mstest-rows
可以创建与测试方法和参数作为虚拟性质的基类。 当你从该类继承你只需要覆盖所需值的属性。 请参阅示例代码:
public class Operation
{
public static int Add(int x, int y)
{
return x + y;
}
}
[TestClass]
public class AddTests : WorkItemTest
{
protected virtual int First{get { return 0; }}
protected virtual int Second{get { return 0; }}
[TestInitialize]
public virtual void Init()
{
//Init code
}
[TestCleanup]
public virtual void Clean()
{
//Clean code
}
[TestMethod]
[Description("x+y = y+x")]
public virtual void Test_operation_commutativity()
{
Assert.AreEqual(Operation.Add(Second, First), Operation.Add(First, Second));
}
}
[TestClass]
public class AddPositiveTest : AddTests
{
protected override int First { get { return 1; } }
protected override int Second { get { return 2; } }
}
[TestClass]
public class AddNegativeTest : AddTests
{
protected override int First { get { return -1; } }
protected override int Second { get { return -2; } }
}