我每次都尝试使用不同的值运行一些测试。例如:我有 3 个方法:methodA
、methodB
和methodC
。我想用不同的索引位置运行每个方法两次。我有TestInitialize
和ClassInitialize
方法。
我尝试使用
ClassInitialize
但没有成功;我收到编译时错误,因为我的测试上下文不是静态的。public TestContext TestContext { get { return testContextInstance; } set { testContextInstance = value; } } [DeploymentItem("UI.Framework.IntegrationTests\\ExpectedValues.xml")] [DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML", "|DataDirectory|\\ExpectedValues.xml", "searchTerm2", DataAccessMethod.Sequential)] [ClassInitialize()] publicstaticvoid ClassInitialize(TestContext context) { string indexPath = TestContext.DataRow[0].ToString(); bool isSuccess1 = SearchApiTestsHelper.InitializeSearchEngine(indexPath, null); Assert.IsTrue(isSuccess1); }
我不能这样做。
我尝试使用
TestInitialize
但未加载数据行,它是null
.[DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML", "|DataDirectory|\\ExpectedValues.xml", "indices", DataAccessMethod.Sequential), TestInitialize()] public void MyTestInitialize() { string indexPath = TestContext.DataRow[0].ToString(); bool isSuccess1 = SearchApiTestsHelper.InitializeSearchEngine(indexPath, null); Assert.IsTrue(isSuccess1); }
我知道我可以将每个方法设置为运行两次,但是有些方法需要不同的数据进行验证。例如
method2
,仍然需要为每个索引位置运行两次,并为每次运行断言来自数据源的一组预期值。[DeploymentItem("UI.Framework.IntegrationTests\\ExpectedValues.xml")] [DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML", "|DataDirectory|\\ExpectedValues.xml", "pb1", DataAccessMethod.Sequential), TestCategory("Integration")] [TestMethod] public void PhraseBoosting() { expectedVal = TestContext.DataRow[0].ToString(); }
这个怎么存档?