gpt4 book ai didi

c# - ClassInitialize 上的数据驱动单元测试

转载 作者:行者123 更新时间:2023-11-30 15:33:46 25 4
gpt4 key购买 nike

我试图每次都使用不同的值运行一些测试。例如:我有 3 个方法:methodAmethodBmethodC。我想使用不同的索引位置对每个方法运行两次。我有 TestInitializeClassInitialize 方法。

  1. 我尝试使用 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);
    }

    我做不到。

  2. 我尝试使用 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);
    }
  3. 我知道我可以将每个方法设置为运行两次,但是,某些方法需要不同的数据进行验证。例如,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();
    }

    如何存档?

最佳答案

假设这样一个 XML 文件:

<Values>
<searchTerm2>this is search term 2</searchTerm2>
<indices>these are the indices</indices>
<pb1>personal best?</pb1>
</Values>

您可以像这样访问值:

[TestClass]
public class UnitTest1
{
public TestContext TestContext
{
get;
set;
}

//[DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML", "|DataDirectory|\\ExpectedValues.xml", "Values", DataAccessMethod.Sequential)]
//[ClassInitialize]
//public static void ClassInitialize(TestContext testContext)
//{
// string indexPath = testContext.DataRow["searchTerm2"].ToString();
// Console.WriteLine(indexPath);
//}

[DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML", "|DataDirectory|\\ExpectedValues.xml", "Values", DataAccessMethod.Sequential)]
[TestInitialize]
public void TestInitialize()
{
string indexPath = TestContext.DataRow["indices"].ToString();
Console.WriteLine(indexPath);
}

[DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML", "|DataDirectory|\\ExpectedValues.xml", "Values", DataAccessMethod.Sequential)]
[TestMethod]
public void TestMethod1()
{
string indexPath = TestContext.DataRow["pb1"].ToString();
Console.WriteLine(indexPath);
}
}

类初始化方法似乎不起作用。我不确定这是否是设计使然。

关于c# - ClassInitialize 上的数据驱动单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16973806/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com