使用文件夹结构和XML文件在NUnit中动态生成测试夹具和测试用例

时间:2011-01-10 14:17:26

标签: c# .net-3.5 nunit integration-testing

我正在尝试根据包含XML文件的文件夹的结构动态生成测试。 (测试使用XML文件来驱动Selenium RC)

所以说例如我有3个文件夹,它们也包含子文件夹(每个文件夹都包含我用来驱动selenium RC的Data.xml文件)

TestData
    TestFixtureOne
        TestCaseOne
        Data.xml
        TestCaseTwo
        Data.xml
        TestCaseThree
        Data.xml    
    TestFixtureTwo
        TestCaseOne
        Data.xml
        TestCaseTwo
        Data.xml
    TestFixtureThree
        TestCaseOne
        Data.xml
        TestCaseTwo
            Data.xml
        TestCaseThree   
        Data.xml
        TestCaseFour
        Data.xml
        TestCaseFive
        Data.xml

我目前的代码是这样的

using System;
using System.Text;
using System.Threading;
using NUnit.Framework;
using System.Collections.Generic;
using System.Collections;
using System.Configuration;
namespace NUnitIntegration
{
    [TestFixture]
    class SeleniumTest
    {
        private static string testDirectory;

        public SeleniumTest()
        {
            testDirectory = ConfigurationManager.AppSettings["TestDirectory"]; // Let’s assume this value is “C:\TestData\”

        }

        [SetUp]
        public void init()
        {
            // Nothing needed as of yet
        }

        [Test, TestCaseSource("GetTestCases")]
        public void TestSource(string test)
        {
            System.Console.WriteLine("Successfully executed test for: " + test);
        }

        [TearDown]
        public void dispose()
        {
            // Nothing needed as of yet
        }

        private static string[] GetTestCases()
        {
            return getTests();
        }

        private static string[] getTests()
        {
            return Directory.GetDirectories(testDirectory);
        }
    }
}

但这只会让我回到TestFixtureOne,TestFixtureTwo和TestFixtureThree文件夹(见下文),这不是我所追求的。我试图使其灵活,以便我可以根据需要添加更多测试(更多TestFixtures和TestCases)。

[NUnit测试树] TestSource     TestFixtureOne     TestFixtureTwo     TestFixtureThree

我最近一直在无情地搜索并遇到了这些对我很有帮助的线索,但现在我被卡住了!

used in multiple [TestFixture]s (另一个我得到上述代码的帖子)

非常感谢任何帮助,

此致

1 个答案:

答案 0 :(得分:1)

我不确定您是否需要使用GetFiles()方法来获取XML文件,但是为了递归获取目录,您可以使用

return Directory.GetDirectories(testDirectory, "*", SearchOption.AllDirectories);

有关此功能的更多信息here