我找不到在使用不同 DataSource的同一测试类中运行不同单元测试的方法。
下面是一个测试类的例子:
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();
// Arrange
int firstValue = Convert.ToInt32(Context.DataRow["firstValue"]);
int secondValue = Convert.ToInt32(Context.DataRow["secondValue"]);
int expectedResult = Convert.ToInt32(Context.DataRow["expectedResult"]);
// Act
int result = calc.Add(firstValue, secondValue);
// Assert
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();
// Arrange
int firstValue = Convert.ToInt32(Context.DataRow["firstValue"]);
int secondValue = Convert.ToInt32(Context.DataRow["secondValue"]);
int expectedResult = Convert.ToInt32(Context.DataRow["expectedResult"]);
// Act
int result = calc.Add(firstValue, secondValue);
// Assert
Assert.AreEqual<int>(result, expectedResult);
}
}
}
如果我只使用来自 xml 的数据运行单元测试,那么一切都运行良好。
如果我只使用来自 csv 的数据运行单元测试,那么一切都运行良好。
如果我在测试类中运行所有测试,则第二个单元测试运行以错误结束。
有没有办法确保在每次单元测试之前重置 DataSource?
我查看了 TestCleanup 和 TestInitialize 但没有找到任何可以这样做的...