Dou*_*oum 5 c# unit-testing mstest datasource data-driven-tests
我找不到在使用不同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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果我只使用xml中的数据运行单元测试,一切运行正常.
如果我只使用来自csv的数据运行单元测试,那么eveything运行正常.
如果我在测试类中运行所有测试,则第二个单元测试运行将以错误结束.
有没有办法确保在每次单元测试之前重置DataSource?
我看过TestCleanup和TestInitialize,但没有发现任何事情......
我得到了它!
我误解了 TestContext 的使用,尽管我必须在 ClassInitialize 方法中进行初始化。
因为我将 ClassInitialized 设置为静态,所以我也需要将 TestContext 设置为静态,并且 TestContext 仅在 ClassInitialize 处初始化一次。
根据 MSDN 文档,我的 TestContext 属性需要是一个实例属性,MSTest 会自动为我提供 TestContext。 http://msdn.microsoft.com/en-us/library/ms404699(v=vs.80).aspx
这样做,使我的 TestContext.DataRow 可以与作为 TestMethod 属性提供的 DataSource 一起正常工作。
希望有一天这可以帮助某人!
| 归档时间: |
|
| 查看次数: |
4437 次 |
| 最近记录: |