【问题标题】:Run TestMethod with different datasets NOT from a database使用不来自数据库的不同数据集运行 TestMethod
【发布时间】:2023-03-16 02:08:01
【问题描述】:

因此,TestMethod 在一次测试运行中只运行一次。

如何在一次测试运行中让 TestMethod 运行多次,每次都针对我设置的不同数据集?我的数据不是来自数据库或文件;我想建立几个不同的内存中测试数据模型实例。

TestInitialize 不允许我这样做,因为它也只运行一次。

什么在控制 TestMethods 的执行?如何让它为每个数据集重新运行我的 TestMethods 以及如何访问数据集?

我认为 TestContext 会很有用,但它似乎只是数据库?

【问题讨论】:

    标签: unit-testing visual-studio-2010 mstest


    【解决方案1】:

    您正在寻找的是所谓的数据驱动测试。 看例如herehere 了解如何使用 MSTest 进行操作。

    HTH.
    托马斯

    【讨论】:

    • 谢谢!这基本上就是我想要的。
    • 第二个链接坏了。你能看看你能不能解决它吗?
    【解决方案2】:

    你可以定义一个测试方法多次调用另一个测试方法,在做正确的设置之后,我并不是说这是一件好事,但我相信它会起作用

    public class TestClass
    {
    //This is where the per-data-source test is. This is not marked as a TestMehod because
    //it will not be invoked directly by the test runner.
    public void ActualTest()
    {
    //Per-data-source test logic here.
    }
    [TestMethod]
    public void RunActualTestsMultipleTimesWithDifferentConfigs()
    {
    
    //Setup for test run with data set 1
    ActualTest();
    //Setup for test with data set 2
    ActualTest();
    }
    }
    

    这感觉就像一个可怕的,可怕的黑客,我坦率地承认这一点。如果我有其他选择,我自己不会使用它,但它可能是一个选择。

    另一种可能性是研究 MSTest 的可扩展性,特别是是否有任何机制来修改或扩展测试运行器

    【讨论】:

    • 我认为扩展测试框架将是一个完全不同的项目,但它很有趣。 MSDN 没有对那里的方法进行描述,我也没有看到任何“虚拟”。无论如何,这些东西都可以在命名空间 Microsoft.VisualStudio.TestTools.Framework 中找到。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-23
    • 2020-11-05
    • 1970-01-01
    • 2018-04-12
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    相关资源
    最近更新 更多