2011-01-10 56 views
2

我试图根据包含XML文件的文件夹结构动态生成测试。 (测试使用的XML文件来推动硒RC)使用文件夹结构和XML文件在NUnit中动态生成测试夹具和测试用例

所以说,比如我有3个文件夹也包含子文件夹(每个包含我用它来驱动硒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

我不知道你是否需要使用的GetFiles ()方法来获取XML文件,但要递归地获取目录,您可以使用

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

更多有关此功能的信息here