0

天!

在 220,000 个文件中有 4.6GB 的测试数据。批量测试需要查找、匹配和解压缩文件对。我想在每一对上运行多个单元测试。如果我无法说服测试框架只查找、匹配和解压缩测试数据一次,而不管需要该数据的单元测试数量如何,这将花费非常长的时间。

NUnit 的 TestDataSource 似乎只适用于一个单元测试,但似乎以深度优先的方式运行多个单元测试:每个测试运行整个数据集,一个接一个测试。

是否有可以运行广度优先的测试框架,将每个数据加载一次并将其提供给多个单元测试?

我可以尝试什么其他方法来为我提供每个数据的所有测试结果,而不仅仅是通过或第一个失败的结果?

4

2 回答 2

1

我怀疑是否有一个简单的开箱即用解决方案。正常模式只是一个接一个地运行一个单元测试,可能会在每个测试中输入多个输入。

在你的情况下,我会尝试以下类似的方法。

[TestMethod]
public void MyTest()
{
    Action<Data>[] subtests = GenerateArrayOfDelegatesForAllSubtests();

    while (this.TestDataAvailiable())
    {
        Data data = this.GetNextTestDataSet();

        foreach (Action<Data> subtest in subtests)
        {
            try
            {
                subtest(data);
            }
            catch (Exception exception)
            {
                this.RecordFailedSubtestResult(subtest, data, exception);
            }
        }
    }

    this.UseRecordedSubtestResultsToFailTestWithMeaningfulMessage();
}

这是很多定制工作,但我不知道 ant 目前无法想到更好的解决方案。希望这可以帮助。

于 2009-09-24T00:38:01.983 回答
0

您可以将所有测试放入一个类中,并使用测试夹具设置(http://www.nunit.org/index.php?p=fixtureSetup&r=2.2.10)进行长时间设置,然后进行所有测试使用相同的数据。唯一的问题是,如果您的任何测试更改了数据,那么它可能会扰乱下一个测试,因为您不应该为测试设计以特定顺序运行。

于 2009-09-24T00:25:41.103 回答