如何为每个测试创建独立的测试结果文件夹?

4
我有一组单元测试,每个测试包含多个方法,每个方法都会在TestResults文件夹中生成输出。目前,所有测试文件都混杂在这个文件夹中,但我想给这个混乱带来一些秩序。
理想情况下,我想为每个测试方法创建一个文件夹。
我知道我可以添加代码到每个测试中,使其在子文件夹中生成输出,但我想知道是否有一种方法可以使用Visual Studio单元测试框架控制输出文件夹位置,可能是在每个测试类的初始化方法中,这样任何新添加的测试都可以自动获得自己的输出文件夹,而不需要复制/粘贴模板代码?
2个回答

0

你让我有点猜不透:这取决于你想用输出做什么?如果输出是由CruiseControl解析的TestResult.xml,为什么你要多个呢?

[编辑]

你可以通过在一个类中分组测试并在[TestFixtureSetup]中设置输出文件夹来跟踪文件夹。

[编辑]

你应该使用像NUnit这样的测试框架,我假设你对此很熟悉。

然后针对特定的测试类,你可以这样做:

[TestFixture]
public class MyOutPutTests
{

    private string folder;

    [SetUp]
    public void InitializeFolder()
    {
        this.folder = @"d:\MyFirstOutputTests";
    }

    [Test]
    public void OutImages()
    {
       ... write to this.folder
    }

    [Test]
    public void OutputLogs()
    {
       .. write logs to this.folder
    }

每个测试都会生成一个或多个日志、图像和输出文件,我希望能够进行可视化检查。 - izb
听起来像是 TestFixtureSetup 有所用处.. 你能给个例子吗? - izb

0
我最终做了这个:
    private string TestDir;

    [TestInitialize]
    public void InitilizeTests()
    {
        TestDir = TestContext.TestDir + @"\Out\" +
                this.GetType().Name + @"." + TestContext.TestName + @"\";

        Directory.CreateDirectory(TestDir);
    }

这将创建一个像这样的目录结构:

TestResults
    <test run>
        Out
            <test class name>.<test method name>

我只是记得将单元测试的所有输出直接定向到TestDir


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接