如何为每个测试提供自己的TestResults文件夹?

时间:2010-04-09 18:06:06

标签: .net visual-studio unit-testing mstest

我有一组单元测试,每个单元测试都有一堆方法,每个方法都在TestResults文件夹中生成输出。目前,所有测试文件都在这个文件夹中乱七八糟,但我想给混乱带来一些订单。

理想情况下,我想为每种测试方法都有一个文件夹。

我知道我可以为每个测试添加代码以使其在子文件夹中生成输出,但我想知道是否有办法使用Visual Studio单元测试框架控制输出文件夹位置,可能使用每个测试类的初始化方法,以便添加的任何新测试自动获得自己的输出文件夹,而无需复制/粘贴的样板代码?

2 个答案:

答案 0 :(得分: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
    }

答案 1 :(得分: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