Динамическое создание тестовых приспособлений и тестовых примеров в NUnit с использованием структур папок и файлов XML - PullRequest
2 голосов
/ 10 января 2011

Я пытаюсь генерировать тесты динамически на основе структуры папок, содержащих файлы XML.(Тесты используют файлы XML для управления Selenium RC)

Например, у меня есть 3 папки, которые также содержат подпапки (каждая из которых содержит файл Data.xml, который я использую для управления селеном RC)

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 Test Tree] TestSource TestFixtureOne TestFixtureTwo TestFixtureThree

В последнее время я искал довольно неуклоннои наткнулся на эти темы, которые мне очень помогли, но теперь я застрял!

используется в нескольких [TestFixture] s (И еще один поток, откуда я получил вышеуказанный код)

Любая помощь будет принята с благодарностью,

С уважением

1 Ответ

1 голос
/ 21 февраля 2012

Я не уверен, нужно ли вам использовать метод GetFiles () для получения файлов XML, но для рекурсивного получения каталогов вы можете использовать

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

Подробнее об этой функции здесь .

...