in java test environment I can use parameterized unit test like 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);
}
}
But how can I do this in visual studio unit test project. I cannot find parameterized attribute or any sample like this.
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
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.
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.