I cannot find a way to run different unit tests in the same class that uses a different DataSource .
Here is an example of a test class:
namespace Calc.Tests
{
[TestClass]
public class CalcTests
{
private static TestContext Context { get; set; }
[ClassInitialize]
public static void ClassInitialize(TestContext context)
{
Context = context;
}
[TestMethod]
[DeploymentItem("AddedValues.csv")]
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", @"|DataDirectory|\AddedValues.csv", "AddedValues#csv", DataAccessMethod.Sequential)]
public void Add_UsingValuesWithinCsv()
{
Calc calc = new Calc();
int firstValue = Convert.ToInt32(Context.DataRow["firstValue"]);
int secondValue = Convert.ToInt32(Context.DataRow["secondValue"]);
int expectedResult = Convert.ToInt32(Context.DataRow["expectedResult"]);
int result = calc.Add(firstValue, secondValue);
Assert.AreEqual<int>(result, expectedResult);
}
[TestMethod]
[DeploymentItem("AddedValues.xml")]
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML", @"|DataDirectory|\AddedValues.xml", "TestCase", DataAccessMethod.Sequential)]
public void Add_UsingValuesWithinXml()
{
Calc calc = new Calc();
int firstValue = Convert.ToInt32(Context.DataRow["firstValue"]);
int secondValue = Convert.ToInt32(Context.DataRow["secondValue"]);
int expectedResult = Convert.ToInt32(Context.DataRow["expectedResult"]);
int result = calc.Add(firstValue, secondValue);
Assert.AreEqual<int>(result, expectedResult);
}
}
}
If I use only unit test, using data from xml, everything works fine.
If I run only unit test using data from csv, eveything works fine.
If I run all the tests in the test class, starting the second unit test fails.
Is there a way to make sure that the DataSource reset is before each unit test?
I looked at TestCleanup and TestInitialize but found nothing ...