8

在 Java 测试环境中,我可以使用参数化单元测试,如下代码所示:

@RunWith(value = Parameterized.class)
public class JunitTest6 {

    private int number;

    public JunitTest6(int number) {
        this.number = number;
    }

    @Parameters
    public static Collection<Object[]> data() {
        Object[][] data = new Object[][] { { 1 }, { 2 }, { 3 }, { 4 } };
        return Arrays.asList(data);
    }

    @Test
    public void pushTest() {
        System.out.println("Parameterized Number is : " + number);
    }
}

如何在 Visual Studio 单元测试项目中执行此操作?我找不到任何参数化属性或任何这样的样本。

4

3 回答 3

9

使用NUnit 框架,您可以像这样将参数传递给测试:

[TestCase(1, 2, 3)]
[TestCase(10, 20, 30)]
public void My_test_method(int first, int second, int third)
{
    // Perform the test
}

这将运行两个不同的时间,1, 2, 3在第一次运行和10, 20, 30第二次运行中传递值。

编辑:有关 NUnit 可用测试运行器的概述,请参阅此 SO 问题

于 2012-07-26T13:10:14.210 回答
1

如果您可以参考NUnit,请查看Parameterized Tests页面。支持内联静态和动态数据值。

如果您出于某种原因不想使用 NUnit,MSTest 或 VS 单元测试支持从CSV、XML 或 DB 获取输入。内联支持可通过扩展获得。动态支持尚未.. 如果您想动态计算输入/输出,您必须将动态代码添加到您的测试方法中。

于 2012-07-27T08:46:55.407 回答
1

这现在也可以通过MSTest 2框架实现。

它带有一个“DataTestMethod”属性和相关的“DataRow”属性。这使得 NUnit 的工作方式相似。

这里有一些关于如何使用它的好例子。

于 2018-07-11T08:50:25.293 回答