bayramucuncu
bayramucuncu

Reputation: 1014

Visual studio parameterized unit test like java

In a Java test environment I can use parameterized unit tests as in the following code:

@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);
    }
}

How can I do this in a Visual Studio unit test project? I can`t find any parameterized attribute or any sample like this.

Upvotes: 9

Views: 8807

Answers (3)

Jakub Kaleta
Jakub Kaleta

Reputation: 1780

This is now also possible via the MSTest 2 framework.

It comes with a 'DataTestMethod' attribute and related 'DataRow' attributes. Which makes it similar in how NUnit works.

Here are some good examples on how to use it.

Upvotes: 3

Gishu
Gishu

Reputation: 136613

If you're okay with referencing NUnit, check out the page for Parameterized Tests. Support for inline-static and dynamic data values.

If you don't want to use NUnit for some reason, MSTest or VS Unit testing supports getting inputs from a CSV, XML or DB. Inline support is available via an extension. Dynamic support not yet.. you'd have to add the dynamic code to your test method if you want to dynamically compute inputs/outputs.

Upvotes: 1

Kjartan
Kjartan

Reputation: 19111

Using the NUnit framework, you would pass parameters to a test like this:

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

This will run the two separate times, passing in the values 1, 2, 3 in the first run, and 10, 20, 30 in the second.

Edit: For an overview of available test runners for NUnit, see this SO question

Upvotes: 11

Related Questions