如何将参数值从TFS中的测试用例传递到使用MTM的单元测试方法中的测试方法?

时间:2017-03-01 05:52:01

标签: c# unit-testing tfs automated-tests mtm

我想从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()。

如何在这种情况下实现参数传递?

1 个答案:

答案 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。