111

XML ファイルを読み込んで解析する必要があるテストがあります。このファイルを毎回テスト実行フォルダーにコピーするにはどうすればよいですか?

XMLファイルは「新しい場合はコピー」に設定され、コンパイルモードは「なし」に設定されています(実際にはコンパイル可能なものではないため)

4

6 に答える 6

133

属性を使用するDeploymentItem

using System;
using System.IO;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using CarMaker;

namespace DeploymentTest
{
    [TestClass]
    public class UnitTest1
    {
        [TestMethod()]
        [DeploymentItem("testFile1.xml")]
        public void ConstructorTest()
        {
            string file = "testFile1.xml";
            Assert.IsTrue(File.Exists(file), "deployment failed: " + file +
                " did not get deployed");
        }
    }
}
于 2009-03-16T06:33:28.427 に答える
28

ソリューションに TestSettings ファイルを提供する場合は、[配置を有効にする] オプションのチェックを外して、mstest が...TestResults\...\out余分なファイルをコピーしないフォルダーから実行しようとするのを停止できるようです (それらを配置オプションにしない限り)。 .

これは、TestSettings (上記の回答は、各項目を独自の DeploymentItem として追加すると、構造を維持できることを示唆しています)。

私にとっては、Visual Studio で直接テストを実行すると問題なく動作しました (つまり、構造内の余分なファイルがテストで検出され、使用されました)。これは、ずっと前に別の理由で TestSettings ファイルを作成したためです (展開を有効にするのがオフになっているため)。 TestSettings ファイルを使用するように指定していなかったため、mstest を実行してテストを実行しました。

Visual Studio で TestSettings ファイルを作成するには、ソリューションを右クリックして [新しい項目] を選択し、TestSettings テンプレートを選択します。mstest.exe のコマンド プロンプトで TestSettings ファイルを使用するには、オプションを追加します/testsettings:C:\Src\mySolution\myProject\local.testsettings (または、TeamCity で適切なパスを使用して追加のコマンド ライン オプションとして追加します)。

于 2011-09-12T00:58:13.333 に答える
8

Preet 回答は、単一のテストの項目を展開するために使用されます。ソリューション レベルで実行する場合は、.testrunco​​nfig 設定を使用します。

于 2011-08-02T14:11:00.240 に答える
5

特に複数のテストで同じデータファイルが必要な場合は、テスト設定を使用するのが最善の解決策です。

最初に testsettings ファイルを作成し、必要な展開項目 (ファイルまたはフォルダー名) を追加します。

<TestSettings name="Local" id="00ebe0c6-7b64-49c0-80a5-09796270f111" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010">
  <Description>These are default test settings for a local test run.</Description>
  <Deployment>
    <DeploymentItem filename="Folder1\TestScripts\test.xml" outputDirectory="TestScripts"/>
    <DeploymentItem filename="Folder2\TestData\" outputDirectory="TestData"/>
  </Deployment>
<...../>
  • Visual Studio で実行し、[Test\Test Settings] メニューから [select Test Settings File] を使用して、新しいテスト設定を選択します。

  • mstest を実行し、/testsettings パラメーターを使用して、mstest にテスト設定を使用させます。

于 2014-01-07T10:37:29.683 に答える
2

AssemblyInitialize 属性を持つメソッドを保持するクラスで DeploymentItem を定義できます。そうすれば、実行するテストに関係なく、ファイルが確実にコピーされます。

残念ながら、DeploymentItem 属性は、実行中のテストを含むクラスでのみ実行されます。したがって、同じファイル セットを使用する 10 個のテスト クラスがある場合は、それらすべてに属性を追加する必要があります。

また、*.testsettings ファイルの変更が Visual Studio で自動的に更新されないこともわかりました。したがって、テスト設定で展開にファイル/フォルダーを追加した後、ソリューション ファイルを再度開いてテストを実行する必要があります。

于 2012-06-27T09:38:57.407 に答える
2

Visual Studio 2012 では、vstest.console.exe (組み込みのテスト ランナー) は、出力ディレクトリを現在のパスとして実行します。これは、テストで使用するために、「常にコピー」または「新しい場合はコピー」プロパティを使用してソリューションにアイテムを含めるだけでよいことを意味します。一般的なケースでは、DeploymentItem 属性は必要ありません。output/test ディレクトリ内のコマンド ラインから vstest.console.exe を実行する場合も同様です。

別のフォルダーが使用される場合がいくつかあります。そのうちの 1 つは、DeploymentItem 属性を使用している場合です。詳しくはこちらをご覧ください。

于 2013-08-08T00:11:27.183 に答える