我想从Team Foundation Server中存在的测试用例中传递参数值。我在Microsoft Test Manager的帮助下进行自动化。
下面是使用单元测试项目创建的示例测试方法。
namespace UnitTestProject1
{
[TestClass]
public class UnitTest1
{
[TestMethod]
public void TestMethod1(int a, int b, int expectedResult)
{
var sut = new Class1();
var result = sut.Add(a,b);
Assert.AreEqual(expectedResult, result);
}
}
}
现在当我尝试构建它时,我收到以下错误:
UTA007:在UnitTestProject1.UnitTest1类中定义的方法TestMethod1没有正确的签名。使用[TestMethod]属性标记的测试方法必须是非静态的,public,不返回值且不应采用任何参数。例如:public void Test.Class1.Test()。此外,如果您正在运行异步单元测试,则return-type必须为Task。示例:public async Task Test.Class1.Test2()。
如何在这种情况下实现参数传递?
答案 0 :(得分:2)
要从TFS中的TestCase读取参数值,您可以使用数据驱动的单元测试:
public TestContext TestContext { get; set; }
public DataRow DataRow { get; set; }
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.TestCase", "http://serverName:8080/tfs/MyCollection;teamProjectName", "541", DataAccessMethod.Sequential)]
[TestMethod]
public void TestMethod()
{
string parameter1 = TestContext.DataRow[0].ToString(); // read parameter by column index
string parameter2 = TestContext.DataRow[1].ToString();
var sut = new Class1();
var result = sut.Add(a, b);
Assert.AreEqual(parameter1, result);
}
注意:541是TestCase id。