189

テストクラスがあり、以下にテストクラスからのサンプルテストを投稿しました

namespace AdminPortal.Tests.Controller_Test.Customer
{
    [TestClass]
    public class BusinessUnitControllerTests
    {
        private IBusinessUnitRepository _mockBusinessUnitRepository;
        private BusinessUnitController _controller;

        [TestInitialize]
        public void TestInitialize()
        {
            _mockBusinessUnitRepository = MockRepository.GenerateMock<IBusinessUnitRepository>();
            _controller = new BusinessUnitController(_mockBusinessUnitRepository);
        }

        [TestCleanup]
        public void TestCleanup()
        {
            _mockBusinessUnitRepository = null;

            _controller.Dispose();
            _controller = null;

        }

        #region Index Action Tests
        [TestMethod]
        public void Index_Action_Calls_GetAllBusinessUnit()
        {
            _mockBusinessUnitRepository.Stub(x => x.GetAllBusinessUnit());

            _controller.Index();

            _mockBusinessUnitRepository.AssertWasCalled(x=>x.GetAllBusinessUnit());
        }
    }
}

プロジェクトを実行すると、次の画面が表示されます ここに画像の説明を入力

参照を確認したところ、テスト プロジェクトにはメイン プロジェクトへの参照が含まれています。テストが実行されていない、または決定的でないと言っている理由について何か考えはありますか?

編集1:

ここの投稿を見て、テストの設定のデフォルトのプロセッサ アーキテクチャを X64 に変更しましたが、それでも動作しません。

4

54 に答える 54

139

上記のオプションのいずれも機能しない場合に備えて、テスト プロジェクトに nuget パッケージがないために App.Config のエントリが破損していることに気づき、このエラーのインスタンスを修正しました。

于 2014-01-27T16:59:58.270 に答える
54

私にとってはかなりイライラしましたが、少なくとも私の場合の解決策を見つけました:

TestMethod が async の場合、それを無効にすることはできません。タスクを返さなければなりません。

それが誰かを助けることを願っています:)

于 2016-03-15T15:59:49.127 に答える
15

私にとっては、ソリューションをクリーニングして再構築するだけで修正されました。

于 2013-12-19T22:50:41.617 に答える
15

私はこの問題を抱えていましたが、こちらの問題と同じであることが判明しました。この答えは私の問題を解決しました

  1. 「実行時にスタートアップ プロジェクトと依存関係のみをビルドする」のチェックを外します (オプション -> プロジェクトとソリューション -> ビルドと実行)。
  2. Configuration Manager で、スタートアップ プロジェクトとテスト プロジェクトの両方で [ビルド] がオンになっていることを確認します。

2 回目にこの問題に遭遇したのは、テストが存在するプロジェクトへのファイルパスにアンパサンドが含まれていたことが原因でした。ReSharper のテスト ランナーでは問題なく動作しますが、dotCover ではうまく動作しません。ファイルパスからアンパサンドを削除します。

これは、dotCoverで確認されているバグです。

于 2015-04-05T15:29:58.883 に答える
8

この問題も修正しました。ただし、このスレッドの解決策はどれも機能しませんでした。これが私がしたことです:

R# は失敗の原因について詳しく説明していなかったので、組み込みの VS2013 テスト ランナーを試すことにしました。テストがまったく実行されなかった場合とまったく同じ動作が発生しました。しかし、出力ウィンドウを見ると、最終的に次のエラー メッセージが表示されました。

ここに画像の説明を入力

エグゼキューター 'executor://mstestadapter/v1' の呼び出し中に例外が発生しました: オブジェクト参照がオブジェクトのインスタンスに設定されていません。

これにより、解決策のあるSO の別のスレッドにたどり着きました。私を信じてください、私は問題が何であるかを決して推測しなかったでしょう.

最近、NuGet パッケージの作成中に AssemblyInfo.cs ファイルにいくつかの変更を加えました。アセンブリ カルチャ値 "en" の指定を含む変更の 1 つ。

私はこれを変更しました:

[assembly: AssemblyCulture("")] 

これに:

[assembly: AssemblyCulture("en")]`. 

それだけでした!それが私の単体テストを不可解に破ったものです。 しかし、その理由はまだわかりません。しかし、少なくとも物事は再び機能しています。この変更を元に戻した後 (つまり、カルチャを "" に戻した後)、テストの実行が再開されました。

それが誰かを助けることを願っています。

于 2014-03-18T15:09:10.930 に答える
7

私の場合、[Test]メソッドはちょうどprivate. 恥

于 2016-01-28T22:36:01.490 に答える
6

私の場合、UnitTests プロジェクトのビルドが単純にオフになった「リリース」モードが原因で、このエラーが発生しました。「デバッグ」モードに戻すと修正されました。

UnitTests ライブラリがまったく見つからない場合、ReSharper が何も言えないことは本当に驚くべきことです。本当に、それは残念です;)

それが誰かを助けることを願っています

于 2015-07-21T20:11:47.553 に答える
5

私の場合、 を返す非同期テスト メソッドを作成しましたvoid。問題を解決するのではTaskなく、返す。void

于 2015-11-10T20:52:30.697 に答える
5

同様の問題がありました。VS 2010、c# CLR 2 Nunit 2.5.7 、単にビルド > VS からのクリーン ソリューションがこの問題の解決に役立ちました

于 2014-02-04T21:53:16.847 に答える
5

私の場合、新しいプロジェクトを追加した後、ソリューション内の一部のテスト プロジェクト内のすべてのテストが実行されなくなりました。ReSharper 2017.1.2 で VS 2017 を使用する場合はこちら。

まず第一に、問題が ReSharper 関連であると仮定して時間を無駄にしないようにしてください。Unit Test Explorerなどの単体テスト機能を使用すると、ReSharper に何か問題があると簡単に推測できます。[テスト] メニューでVisual Studio のテスト エクスプローラーを開き、[すべて実行] を試してください。これを行うことの追加の利点は、正しい方向を示すエラー メッセージが出力ウィンドウに表示されることです。が実行されていない場合、問題は ReSharper ではなく Visual Studio にあると想定しても安全です。

Configuration ManagerActive solution platformの1 つであるAny CPUを削除して再度追加することになりました。そうすることで、変更を保存してソリューションを再度開いた後、すべてのテストの実行が再開されました。

新しいプロジェクトを追加したときにソリューション ファイルに予期しない構成エントリがあったと思いますが、プラットフォームの 1 つを再作成することで、それ自体が修正されました。diff を試みましたが、何が変更されて問題が発生したのかを特定するのは困難でした。

于 2017-06-02T19:06:52.670 に答える
4

私は VS2013、ReSharper 9.1 と ReSharper および Moq の MSpec 拡張機能を使用しています。同じ「決定的でない」エラーが発生しました。

Moq からの私の Mock の 1 つが初期化されておらず、宣言されているだけであることが判明しました。初期化されたものはすべてのテストを再度実行しました。

于 2015-05-06T09:54:19.250 に答える
4

のテスト プロジェクトでこの問題が発生している場合.NET Core 2.0は、Visual Studio 2017 Community (v15.3 3). 私もこのバグを使用していましたJetBrains ReSharper Ultimate 2017.2 Build 109.0.20170824.131346-私が投稿したバグがあります。

JetBrains は、新しいテスト プロジェクトをゼロから作成して再現することをお勧めします。それを行ってテストが正常に機能するようになったとき、問題の原因がわかりました。

  • *.csprojこれをファイルから削除します。
  • Service Include="{82a7f48d-3b50-4b1e-b82e-3ada8210c358}"

私がそれをしたとき - テストはうまくいき始めました。

于 2017-09-07T15:45:41.607 に答える
3

私はVS2010、NUnit 2.6.3を使用しています(ReSharperは内部的に2.6.2を使用していると言っていますが?)、ReSharper 7.7.1およびNCrunch 2.5.0.12を使用していて、同じ「...テストは決定的ではありません...」という問題に遭遇していましたNUnitを使用しましたが、NCrunchはすべて問題ないと言いました. 今日のほとんどの間、NUnit と NCrunch は同期しており、どのテストが適切で、どのテストがリファクタリングを必要としているかについて合意していました。その後、まだ理解できないことが起こりました。 pass)、その後、それらはすべて機能していると判断し、NUnit はすべてのテストについて不平を言い始めましたが、「..test is inconclusive...」という同じメッセージの 1 つを除いて、NUnit が続行したにもかかわらず、パスに 1 ステップ スルーすることができました。 「決定的ではない」と表示する)。

上記の提案のいくつかを試してみましたが、最終的には VS2010 を閉じてソリューションを再度開きました。ほら、すべてのテストが再び満足のいくものになり、NCrunch と NUnit が再び同じ結果を報告しています。残念ながら、何が変更されて同期が取れなくなるのかわかりませんが、VS2010 を閉じて再度開くと修正されたようです。

たぶん、他の誰かがこれに遭遇し、この単純な (実際の修正が何であるかがわからないため、最終的に満足できない場合) ソリューションを使用できるようになるでしょう。

于 2014-03-24T22:05:30.453 に答える
3

NUnit 3.5 から 2.6.4 にダウングレードすることで解決したため、NUnit 3.5 と Resharper 9.2 の間の互換バージョンに関連していました。それは私のために働いた。幸運を。

于 2016-12-26T08:02:18.313 に答える
3

私の場合、テストメソッドはプライベートでしたが、パブリックに変更したところ、機能しました。

于 2016-04-21T14:56:55.840 に答える
2

私はまったく同じ問題を抱えていました。私のテストプロジェクトではテストが実行されませんでした。たまたま、テストを実行するときに間違った構成を選択していました。デバッグに戻すと、問題が修正されました。

デバッグ構成

于 2015-08-24T08:35:38.703 に答える
1

私の場合、あるテストでこのエラーが発生し、意図せずにテストをスキップしたことが判明しました。クリックしてブレークポイントを配置する画面の左側で、テストがスキップされるように設定されていることに気付くかもしれません (これを示す Microsoft アイコンがあります)。テストを有効にすると、エラーはなくなりました。

于 2014-09-29T19:58:25.420 に答える
1

私の場合、unittestproject から 2 つのプロジェクトを参照しました。参照されている両方のプロジェクトは、同じ名前の dll を使用していましたが、バージョンが異なりました。

Visual Studio ではこれに気づきませんでした。イベントビューアでエラーに気づきました。

これを解決するために、 unittestproject のapp.configで bindingRedirect を使用して dll バージョンを修正しました。

于 2016-03-22T14:34:43.093 に答える
1

私の場合、 TestCaseSource にはテストメソッドのパラメーターとは異なる数の引数があることがわかりました。

[Test, TestCaseSource("DivideCases")]
public void DivideTest(int n, int d, int q)
{
    Assert.AreEqual( q, n / d );
}

static object[] DivideCases =
{
    new object[] { 12, 3 },
    new object[] { 12, 2 },
    new object[] { 12, 4 } 
};

ここで、DivideCases の各オブジェクト配列には 2 つの項目があり、DivideTest メソッドには 3 つのパラメーターがあるため、3 である必要があります。

于 2016-11-03T11:02:35.967 に答える
1

私はまったく同じ問題を抱えていましたが、何も役に立ちませんでした。

最終的に、ユニット プロジェクトとユニット テスト プロジェクトの名前空間が一致していないことがわかりました。

私のユニット プロジェクトの名前空間は unit.project で、テスト プロジェクトの名前は unit.project.tests でしたが、テストのデフォルトの名前空間はユニットと同じで、どちらも unit.project でした。

名前空間を異なるもの (プロジェクトごとに 1 つの名前空間) に更新すると、すべてが機能しました。

于 2014-08-03T09:05:35.187 に答える
0

ここに画像の説明を入力

ここに画像の説明を入力

時々、ヘッダー ( .h ) ファイルをドロップして、名前を変更せずにソース (.cpp) として再追加してみてください。resharp c++​​ && vs2019でテスト、テストコードはこちら

于 2019-07-17T13:05:40.647 に答える