MSTest 相当于 NUnit 的参数化测试吗?
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 supports a feature where you can specify a set of data inputs for a unit test to be run multiple times.
[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)
{
...
}
What's the best way to accomplish this same type of thing using MSTest? I can't find a similar set of attributes.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
对于使用 MSTest2 的用户,DataRow + DataTestMethod 可以准确执行此操作:
更多相关信息 此处
For those using MSTest2, DataRow + DataTestMethod are available to do exactly this:
More about it here
这个 帮忙?
Would this help?
我的答案与@oscar-e-fraxedas-tormo 类似。
您可以从内部具有 1 到 100 个测试方法的生成类之一进行子类化,并在派生类中提供所有测试逻辑。
在下面的示例中:
Ha_ha_ha_Test
类将包含42
生成的行(方法)。对于此行中的每一行,将调用自定义方法GetNextDataRow
以提供所需的测试数据。更多详细信息:
https://github.com/dzhariy/mstest-rows
My answer is similuar to @oscar-e-fraxedas-tormo one.
You can subclass from one of the generated classes that have from 1 to 100 test methods inside and provide all test logic in the derived class.
In the example below:
The class
Ha_ha_ha_Test
will contain42
generated rows (methods). For each of this row, the custom methodGetNextDataRow
will be called in order to provide required test data.More details:
https://github.com/dzhariy/mstest-rows
实际上,参数化单元测试(PUT)是单元测试的自然推广。 Microsoft Research 有一个名为 Pex 的项目,它将自动为您的被测类 (CUT) 生成 PUT。 Pex 是一个自动测试输入生成工具。 Pex 工具不会自己准备测试数据,而是会找到 CUT 参数的感兴趣的输入并相应地生成单元测试用例。请查看此处。
Actually, the Parameterized Unit Test (PUT) is a natural generalization of unit test. And Microsoft Research has a project called Pex that will generate the PUT for your Class Under Test (CUT) automatically. Pex is an auto test input generation tool. Instead of preparing the test data yourself, the Pex tool will find the inputs of interest for the parameters of CUT and generate the unit test cases accordingly. Please check here.
您可以创建一个基类,其中包含测试方法和参数作为虚拟属性。
当您从此类继承时,您只需使用所需的值覆盖属性。
请看示例代码:
You can create a base class with the test method and the parameters as virtual properties.
When you inherit from this class you only need to override the properties with the desired values.
Please see the sample code: