我無法找到一個方法來運行同一測試類至極內不同的單元測試使用不同的數據源。如何使用多個數據源運行單元測試?
這是一個測試類的例子:
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數據的單元測試,eveything運行良好。
如果我運行所有測試內的測試類,第二個單元測試運行結束時出錯。
有沒有辦法確保數據源在每個單元測試之前重置?
我已經看了TestCleanup和TestInitialize,但沒有發現任何這樣做......
我不明白。 – Onilol