65

次の構造の ac# ソリューションがあります。

mySolution
  myProject
  myProject.MSTests
    References
      Microsoft.VisualStudio.QualityTools.UnitTestFramework
    sutMSTests.cs

sutMSTests.cs:

[TestClass()] 
public class sutMSTests
{
    [TestMethod]
    public void MyTest0()
    {
        Microsoft.VisualStudio.TestTools.UnitTesting.Assert.AreEqual(4, 2 + 2);
    } 
}

テスト、実行、ソリューション内のすべてのテストを介してテストを実行しようとすると、VS2008 ステータス ラインに次のように表示されます。

テストがロードされていないか、選択したテストが無効になっているため、テストは実行されません。

テスト、Windows、テスト ビューにはテストが表示されません。

注: Microsoft のウィザードを使用する代わりに、手動でテストを作成しました (xUnit.net で動作します)。

手動で作成した MSTest のセットアップと、ウィザードを使用して生成した別のテストのセットアップを比較しましたが、それらは十分に似ているようです。

質問:上記のエラー メッセージの最も可能性の高い原因は何ですか?

編集 2010-02-25: 詳細:ソリューション アイテム
フォルダー を右クリックし、[追加]、[新しいプロジェクト] の順に選択し、「Test Projects,Test Documents::Visual Studio Test Project template」と入力します。

新しいプロジェクトのデフォルトの何もしないテスト「TestMethod1」が検出され、合格しました。
しかし、私のテストは表示されませんでした...そのため、テスト メソッドをコピーして、既定のテスト テスト プロジェクト "TestProject1" に貼り付けました。

私のテストは「TestProject」で検出されましたが、元の場所では検出されませんでした。

「TestProject1」のファイル、構成、および設定を、手動で作成したテスト プロジェクトと比較しました。

この時点で、簡単には検出できない設定が Visual Studio テスト プロジェクト テンプレートによって行われると推測しています。

imo、手動でテスト プロジェクトを作成するのは、Visual Studio テスト プロジェクト テンプレートを使用して作成するのと同じくらい簡単です。

注意: Visual Studio テスト プロジェクト テンプレートの使用に反対しているわけではありません。私にとっては、カーテンの後ろにあるものを理解したいと思っています。これにより、私ははるかに優れたプログラマーになることができます。

4

18 に答える 18

77

Google 社員向けのもう 1 つの問題 - これは私の問題であることが判明しました。テスト プロジェクトが、使用しているソリューション構成でビルドするように設定されていることを確認してください。テスト アセンブリがビルドされていない場合、VS は存在しないアセンブリでテストを見つけることができず、しばらくの間壁に頭をぶつけるでしょう :-)

于 2010-06-17T01:55:29.490 に答える
47

おそらく少し遅れますが、この質問はうまくグーグルアップします、私は将来のグーグルのためにいくつかのパン粉を投げ込むと思いました。

Bryan Cookは、MSテストプロジェクトの手動作成に関するブログ投稿でProjectTypeGuidsを確認することを提案しています。どうやらあなたが必要とする魔法のGUIDは{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}c#と{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{F184B08F-C81C-45F6-A57F-5ABD9991F28F}VBのためのものです。詳細については、彼のブログ投稿を参照してください。

ブログ投稿がなくなる場合は、csprojファイルのメインプロパティグループに次の要素を追加する必要があります。

<ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
于 2010-06-17T01:42:20.050 に答える
10

そこにいるGooglerのための別のアイデア。私の問題は、無視されたテストを再度実行しようとすることでした。Ignore ラベルを削除すると、同じ MS エラー メッセージが表示されます。テストを自動的に再度有効にしません。この記事では、最後の手順について説明します。 http://richallen.blogspot.com/2008/05/ms-test-re-enabling-ignored-tests.html

于 2011-03-11T22:14:00.083 に答える
9

Visual Studioが正常に機能していれば、修正は必要ありませんが、簡単です。

特にこの記事で、他の人が貢献したことを要約すると、これが最終的に私のために働いたものです:

  • 構成マネージャーを使用して、使用している構成とプラットフォームを組み込むためにテストプロジェクトが選択されていることを確認します(例:configuration=Debugおよびplatform=x86)
  • [TestClass]メソッドがに属していること、および両方がマークされていること[TestMethod]、および属性を使用していないことを確認してください[Ignore]
  • テストビューを使用してテストを見つけます。 テストビュー
  • プロパティウィンドウ(F4)を開き、テストが有効になっていることを確認します 有効
于 2012-07-16T19:36:46.707 に答える
2

同じメッセージを受け取りましたが、ネットワーク ドライブに単体テスト プロジェクトがあることが判明しました。ローカルに移動すると、正常に動作しました。このエラーが発生した場合に試してみてください。ジョン

于 2011-05-03T19:38:44.870 に答える
2

私はこれを手動で行いました:

次のコードを使用して、新しい C# クラス ライブラリ プロジェクトを作成しました。

namespace SO_Answer
{
    public class Class1
    {
        public void Test()
        {
            var k = "Hello";
        }
    }
}

プロジェクトを保存してから、「ファイル - >追加 - >新しいプロジェクト」に移動し、「プロジェクトのテスト」を選択しました。VS が単体テスト プロジェクトを作成した後、以前に作成したクラス ライブラリ プロジェクトへの参照を追加しました。

私のテストでは、次のコードがあります。

namespace Unit_Test
{
    /// <summary>
    /// Summary description for UnitTest1
    /// </summary>
    [TestClass]
    public class UnitTest1
    {
        /// <summary>
        ///Gets or sets the test context which provides
        ///information about and functionality for the current test run.
        ///</summary>
        public TestContext TestContext { get; set; }

        #region Additional test attributes

        // You can use the following additional attributes as you write your tests:
        // Use ClassInitialize to run code before running the first test in the class
        // [ClassInitialize()]
        // public static void MyClassInitialize(TestContext testContext) { }
        // Use ClassCleanup to run code after all tests in a class have run
        // [ClassCleanup()]
        // public static void MyClassCleanup() { }
        // Use TestInitialize to run code before running each test 
        // [TestInitialize()]
        // public void MyTestInitialize() { }
        // Use TestCleanup to run code after each test has run
        // [TestCleanup()]
        // public void MyTestCleanup() { }
        #endregion

        /// <summary>
        /// The test method 1.
        /// </summary>
        [TestMethod]
        public void TestMethod1()
        {
            var f = new Class1();

        }
    }
}

私が追加した唯一のコードは、using ステートメントとvar f = new Class1();ステートメントです。MSTest ランナーを見ると、表示されていることがわかりTestMethod1ます。

単体テストが取り上げられない理由が思いつきません。私がこれを経験したのは、MSTest ランナーを使用して NUnit テストを誤って表示しようとしたためです。ゼロから始めてみてください。

于 2010-02-22T23:13:05.453 に答える
2

これは別の理由かもしれません。ソリューションが 64 ビットで実行されているかどうかを確認します。その場合は x86 に変更してください。

于 2011-11-16T17:20:11.407 に答える
1

この問題が発生した場合、Visual Studio でテスト プロジェクトを作成する必要があります。1. ツールバーの [テスト] を選択し、[新しいテスト] を選択します。プロジェクトを作成し、この時点でテスト メソッドを作成します。この時点で動作するはずです。

于 2011-09-15T16:28:08.763 に答える
1

他の答えはどれも私にとってはうまくいきませんでした。出力ウィンドウに次のメッセージが表示され続けました。

------ Discover test started ------
========== Discover test finished: 2 found (0:00:00.1310428) ==========
No tests found to run.

私の場合、0-Local という新しい構成を作成した後にのみ問題が発生しました。csproj ファイルの関連セクションに追加<DebugSymbols>true</DebugSymbolsする必要があったため、次のようになります。

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == '0-Local|AnyCPU'">
  <DebugSymbols>true</DebugSymbols>
  <OutputPath>bin\0-Local\</OutputPath>
</PropertyGroup>
于 2015-07-30T18:10:42.713 に答える
1

後世のために:テストを静的としてマークすると、テストリストに静かに表示されなくなることがわかりました。どうやらそれは許可されていません。

于 2013-11-18T21:49:04.713 に答える
0

これは私も直面した典型的な問題です。しかし、私が自分自身に従った最も簡単な解決策は...プロジェクトを一度ビルドして、もう一度再構築することです。解決できますように。

于 2011-01-20T05:05:38.130 に答える
0

もう 1 つは、NUnit を使用している Google 社員、特に MS ユニット テストから NUnit に移行した人向けです。プロジェクトを MS Test プロジェクトとして識別しているプロジェクト タイプ Guid をプロジェクト ファイルから削除してください。

<ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
于 2016-12-19T21:51:12.003 に答える
0

これと同じ問題がありましたが、以前の回答を読んでみると、すべてが良さそうに見えました。

私の場合、テスト スイートを実行して小さな変更を加え、ソリューションをビルドして、テストを実行しようとしました。立ち入り禁止。私はさらに数回ビルドを試み、他の人が試した問題を探しました。まだ行きません。

テスト メソッドの 1 つで Enter キーを押して新しいメソッドを追加し、F6 キーを押してソリューションをビルドし、[単体テストの実行] をクリックしました。

ビンゴ!すべてがスムーズに進みました。

于 2013-07-05T20:31:30.080 に答える
0

ソリューションに VSMDI ファイルはありますか? このファイルは必須だと思います (未検証)。

于 2010-02-22T23:10:24.847 に答える