3

毎回異なる値でテストを実行しようとしています。例: methodAmethodB、およびの 3 つのメソッドがありmethodCます。異なるインデックスの場所で各メソッドを 2 回実行したいと考えています。私はTestInitializeClassInitialize方法を持っています。

  1. 使用してClassInitializeみましたが、成功しませんでした。テスト コンテキストが静的ではないため、コンパイル時エラーが発生します。

    public TestContext TestContext
    {
       get { return testContextInstance; }
       set { testContextInstance = value; }
    }
    
    [DeploymentItem("UI.Framework.IntegrationTests\\ExpectedValues.xml")]
    [DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML", "|DataDirectory|\\ExpectedValues.xml", "searchTerm2", DataAccessMethod.Sequential)]
    [ClassInitialize()]
    publicstaticvoid ClassInitialize(TestContext context)
    {        
       string indexPath = TestContext.DataRow[0].ToString();
       bool isSuccess1 = SearchApiTestsHelper.InitializeSearchEngine(indexPath, null);
       Assert.IsTrue(isSuccess1);
    }
    

    私はこれを行うことができませんでした。

  2. 使用してみTestInitializeましたが、データ行がロードされていませんでしたnull

    [DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML",
                "|DataDirectory|\\ExpectedValues.xml", 
                "indices", 
                DataAccessMethod.Sequential),
    TestInitialize()]
    public void MyTestInitialize()
    {
        string indexPath = TestContext.DataRow[0].ToString();
        bool isSuccess1 = SearchApiTestsHelper.InitializeSearchEngine(indexPath, null);
        Assert.IsTrue(isSuccess1);
    }
    
  3. 各メソッドを 2 回実行するように設定できることはわかっていますが、一部のメソッドでは検証に異なるデータが必要です。たとえばmethod2、インデックスの場所ごとに 2 回実行し、実行ごとにデータ ソースから期待される値のセットをアサートする必要があります。

    [DeploymentItem("UI.Framework.IntegrationTests\\ExpectedValues.xml")]
    [DataSource("Microsoft.VisualStudio.TestTools.DataSource.XML",
                "|DataDirectory|\\ExpectedValues.xml", 
                "pb1", DataAccessMethod.Sequential),
     TestCategory("Integration")]
    [TestMethod]
    public void PhraseBoosting()
    {
        expectedVal = TestContext.DataRow[0].ToString();
    }
    

    これはどのようにアーカイブできますか?

4

2 に答える 2

1

クラス初期化レベルでのデータ ドリブン テストは、VS ユニット テスト フレームワークではサポートされていません。唯一のオプションは、TestMethod レベルで使用することです。彼らがこれを次のバージョンに追加することを願っています。

于 2013-07-30T09:30:35.237 に答える