2009-08-29 4 views
5

私はC#VS2008でXmlデータソースを使用してデータ駆動型単体テストを作成しています。Microsoft.VisualStudio.TestTools.DataSource.XMLを拡張する

属性は次のようになり、すべてがうまく機能します。

[DeploymentItem("HtmlSchemaUrls.xml")] 
    [DataSource("DataSource", "Microsoft.VisualStudio.TestTools.DataSource.XML", "|DataDirectory|\\HtmlSchemaUrls.xml", Microsoft.VisualStudio.TestTools.WebTesting.DataBindingAccessMethod.Sequential, "URL")] 
    [DataBinding("DataSource", "URL", "URL_Text", "DataSource.URL.URL_Text")] 
    [TestMethod] 

私はApp.configを通じできれ設定可能、Microsoft.VisualStudio.TestTools.DataSource.XMLデータソースの機能を拡張したいと思います。たとえば、真の場合はbool、Xmlファイルのすべての行を実行し、偽の場合は1つのみを実行します。

私はテストケース自体でこのチェックを実行したくありません - 私はこの要件のテストケースを1000s持っています。

これを達成する方法に関するガイダンスは、最も高く評価されます。

+1

何かが間違っているようです(正直なところ、あなたは統合テストをしています。ユニットテスト)。 1行のXMLだけが必要な場合には、テストしているコードを分離するために何らかの嘲笑やスタブを行うことを検討することをお勧めします。 – Michael

答えて

1

AssemblyInitializeを使用して、テストセットリポジトリからXMLテストセットをコピーします。
1 - この方法では、[DeploymentItem( "HtmlSchemaUrls.xml")]
2は必要ありません。テストする必要があるレコードを含む新しいファイルを作成します(パラメータ化されたxsl?を使用)
3 - その操作のすべてのパラメータは、あなたのapp.configに

を保存することができ短縮化の例(テストケースのenvを駆動するデータを準備するために、単純なコピーを使用して:あなたは1000を持っている場合

[AssemblyInitialize()] 
public static void AssemblyInit(TestContext context) 
{ 
    ... 
    string strRelocatedTestCaseFile = 
    Path.Combine(TheToolBox.ShortPath(AppDomain.CurrentDomain.BaseDirectory),                   
       "TestCase.xml"); 
    if(!string.IsNullOrEmpty(strTestCaseFile)) 
    { 
    string strMessage = "Copying TestCase input file: '" + 
         strTestCaseFile + "' to '" + strRelocatedTestCaseFile + "'"; 
    Console.WriteLine(strMessage); 
    File.Copy(strTestCaseFile, strRelocatedTestCaseFile, true); 
    } 
} 
+0

これは良いアイデアですが、** AssemblyInitializeが実行される前に、データソースがデータをバインドするため、元に戻ってきません。このテストは、データソースファイルの「古い」バージョンを使用して常に停止します。 – Snixtor

関連する問題