テストクラスがあり、以下にテストクラスからサンプルテストを投稿しました
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:
here という投稿を見て、テストの設定のデフォルトプロセッサアーキテクチャをX64に変更しましたが、まだ機能しません。
これはResharperの問題でした。 Resharper options-> Tools-> MSTESTで、Use Legacy Runnerのチェックを外したところ、動作するようになりました。
上記のオプションのいずれも機能しなかった場合に備えて、テストプロジェクトのNugetパッケージが見つからないためにApp.Configのエントリが破損していることに気付き、このエラーのインスタンスを修正しました。
私にとってはかなりイライラしましたが、少なくとも私の場合の解決策を見つけました:
TestMethodが非同期の場合、無効にすることはできません。Taskを返す必要があります。
それが誰かを助けることを願っています:)
Resharperで同じ問題が発生したため、オプションを変更してこのエラーを修正しました。
Resharper =>オプション=>ツール=>単体テスト
「シャドウコピーアセンブリをテストする」オプションをオフにする必要がありました。
私はこの問題を抱えていましたが、 この問題はこちら と同じであることが判明しました。 この答えは私のために問題を解決しました 。
- [スタートアッププロジェクトと実行時の依存関係のみをビルドする](オプション->プロジェクトとソリューション->ビルドと実行)のチェックを外します
- Configuration Managerで、スタートアッププロジェクトとテストプロジェクトの両方で[ビルド]チェックボックスがオンになっていることを確認します。
この問題に2度目に遭遇したのは、テストが存在するプロジェクトへのファイルパスにアンパサンドがあるためです。 ReSharperのテストランナーでは正常に動作しますが、dotCoverでは正常に動作しません。ファイルパスからアンパサンドを削除します。
これは、dotCoverを使用した 確認済みのバグ です。
私にとっては、単にソリューションをクリーニングして再構築するだけで解決しました。
私にとって、問題はcorruptNUnit/ReSharpersettings XML-file(予期しない電力不足による)。
エラーを特定するには、Visual Studioを このコマンド で開始しました。
devenv.exe /ReSharper.LogFile C:\temp\resharper.log /ReSharper.LogLevel Verbose
ファイルを調べると、次の例外が明らかになりました。
09:45:31.894 |W| UnitTestLaunch | System.ApplicationException: Error loading settings file
System.ApplicationException: Error loading settings file ---> System.Xml.XmlException: Root element is missing.
at System.Xml.XmlTextReaderImpl.Throw(Exception e)
at System.Xml.XmlTextReaderImpl.ParseDocumentContent()
at System.Xml.XmlLoader.Load(XmlDocument doc, XmlReader reader, Boolean preserveWhitespace)
at System.Xml.XmlDocument.Load(XmlReader reader)
at System.Xml.XmlDocument.Load(String filename)
at NUnit.Engine.Internal.SettingsStore.LoadSettings()
--- End of inner exception stack trace ---
at NUnit.Engine.Internal.SettingsStore.LoadSettings()
at NUnit.Engine.Services.SettingsService.StartService()
at NUnit.Engine.Services.ServiceManager.StartServices()
at NUnit.Engine.TestEngine.Initialize()
at NUnit.Engine.TestEngine.GetRunner(TestPackage package)
at JetBrains.ReSharper.UnitTestRunner.nUnit30.BuiltInNUnitRunner.<>c__DisplayClass1.<RunTests>b__0()
at JetBrains.ReSharper.UnitTestRunner.nUnit30.BuiltInNUnitRunner.WithExtensiveErrorHandling(IRemoteTaskServer server, Action action)
これはではなくテストプロジェクトのapp.configです!
quick googling aroundは、次のファイルを犯人として特定しました。
%LOCALAPPDATA%\NUnit\Nunit30Settings.xml
存在していましたが、空でした。削除してVisual Studioを再起動すると、問題が解決しました。
(Visual Studio Professional 2017 v15.3.5およびReSharper 2017.2.1を使用)。
この問題も修正しました。ただし、このスレッドのソリューションはいずれも機能しませんでした。私がやったことは...
R#が失敗の理由について詳しく説明していなかったため、組み込みのVS2013テストランナーを試すことにしました。テストがまったく実行されなかったまったく同じ動作を経験しました。しかし、出力ウィンドウを見ると、最終的にエラーメッセージが表示されました。
Executor 'executor:// mstestadapter/v1'の呼び出し中に例外が発生しました:オブジェクト参照がオブジェクトのインスタンスに設定されていません。
これにより、私は SOの別のスレッド に解決策を導きました。私を信じて、私は問題が何であったか決して推測しなかっただろう。
最近、NuGetパッケージの作成中にAssemblyInfo.csファイルにいくつかの変更を加えました。 「en」のアセンブリカルチャ値の指定を含む変更の1つ。
これを変更しました:
[Assembly: AssemblyCulture("")]
これに:
[Assembly: AssemblyCulture("en")]`.
それでした!それがユニットテストを不可解に壊したものです。しかし、私はまだ理由を理解していません。しかし、少なくとも物事は再び機能しています。この変更を元に戻した(つまり、カルチャを ""に戻した)後、テストの実行が再開されました。
それが誰かを助けることを願っています。
私の場合、app.configで接続文字列をコピーしているときに間違えました。configSectionsタグ内にそれを入れていました!
それに気づくまでしばらく時間がかかりました... VSインテリセンスに感謝します。
私の場合、[Test]
メソッドはprivate
でした。恥
私の問題は、NUnitをNugetだけでインストールしていたことです。私も必要だったNUnit3TestAdapterをインストールしていませんでした。
Install-Package NUnit3TestAdapter
Resharper Ultimate 2017.2を使用したvs 2017 update 3でこの問題に直面しました
再起動vsまたは再起動マシンは役に立ちません。
次のようにキャッシュをクリアすることで問題を解決しました。
Resharper ->options-> Environment ->click the button 'Clear caches'
更新:
テストウィンドウの右上隅にボタン「エラー」(Resharper 2018にあります)があります。
エラーボタンをクリックすると、問題の解決に役立つエラーメッセージが表示されます。
問題の根本を追跡するには、Visual Studioをログモードで実行します。 vs 2017では、次のコマンドを実行します:
devenv /ReSharper.LogFile C:\temp\log\test_log.txt /ReSharper.LogLevel Verbose
テストを実行します。
ログファイルtest_log.txtを確認し、ファイルで「エラー」を検索します。
ログファイルは、解決できるエラーを見つけるのに非常に役立ちます。または、ログファイルに関する問題を Resharperのテクニカルサポートチーム に送信できます。
同様の問題がありました。 VS 2010、c#CLR 2 Nunit 2.5.7、単にビルド> VSからのクリーンなソリューションがこの問題の解決に役立ちました
私の場合、void
を返す非同期テストメソッドを作成しました。 Task
の代わりにvoid
を返すことで問題が解決しました。
Visual Studio 2017 Community (v15.3 3)
のテストプロジェクト.NET Core 2.0
でこの問題が発生している人向け。また、JetBrains ReSharper Ultimate 2017.2 Build 109.0.20170824.131346
を使用してこのバグが発生しました。 bug を投稿しました。
JetBrainsは、新しいテストプロジェクトを最初から作成して再現することを推奨しました。それを行ってテストが正常に動作するようになったとき、問題の原因を見つけました。
*.csproj
ファイルから削除します:Service Include="{82a7f48d-3b50-4b1e-b82e-3ada8210c358}
"私がそれをしたとき-テストはうまくいき始めました。
私の場合、UnitTestsプロジェクトのビルドが単純にオフになった「リリース」モードのためにこのエラーが発生しました。 「デバッグ」モードに切り替えると修正されました。
UnitTestsライブラリがまったく見つからない場合、ReSharperが何も言えないのは本当に驚くべきことです。真剣に、それは残念です;)
それが誰かを助けることを願っています
最近DLL依存関係を追加しましたか? ... 私のような
私はちょうど同じ問題に出くわしましたが、テスト出力ウィンドウやその他の実用的な場所で手がかりを得られないことは非常に腹立たしいことでした。
原因は非常に愚かでした。サブプロジェクトの追加の外部DLLに依存関係の前日を追加しただけで、変更後にメインプロジェクトアプリが実際にビルドされ、正常に実行されました。しかし、私の単体テストはメインアプリの姉妹プロジェクトにあるため、DLLが呼び出されたこの変更されたサブプロジェクトに依存しすぎていました...しかし、テストプロジェクトの実行時の場所はそうではありませんメインアプリのそれ!そのため、ビルドを変更して、欠落しているDLLをテストランタイムディレクトリにコピーすることで問題が修正されました。
VS2013、ReSharper 9.1、ReSharperおよびMoqのMSpec拡張機能を使用しています。同じ「決定的でない」エラーが発生しました。
Moqの私のモックの1つは初期化されておらず、宣言されているだけでした。すべてのテストを初期化して、再度実行しました。
私の場合、新しいプロジェクトを追加した後、ソリューション内の一部のテストプロジェクト内のallテストが実行されなくなりました。 VS 2017とReSharper 2017.1.2の使用はこちら。
まず、問題がReSharper関連であると仮定して時間を無駄にしないようにしてください。 Unit Test Explorerなどの単体テスト機能を使用すると、ReSharperに何か問題があると簡単に推測できます。 Visual StudioのTest ExplorerをTestメニューで開き、Run All "。これを行うことの追加の利点は、出力ウィンドウに正しい方向を示すエラーメッセージが表示されることです。同じテストセットが実行されない場合、問題はReSharperではなくVisual Studioにあると想定しても安全です。
最終的に、アクティブソリューションプラットフォーム、いずれかのCPU、Configuration Manager。そうすることで、変更を保存してソリューションを再度開いた後、すべてのテストの実行が再開されました。
新しいプロジェクトを追加したときにソリューションファイルに予期しない構成エントリがあり、プラットフォームの1つを再作成することでそれが修正されたと思います。差分をとろうとしましたが、何が変更されて問題が発生したかを知るのは困難でした。
私の解決策:
NUnit 3.2.0にはResharperに関するいくつかの問題があります-2.6.4へのダウングレード:
update-package nunit -version 2.6.4
同じ問題がありました。NUnit3.5から2.6.4にダウングレードすることで解決したため、NUnit 3.5とResharper 9.2の互換性バージョンに関連していました。それは私のために働いた。がんばろう。
私は、NUnitフレームワークを使用してテストを実行するのと同じ問題を抱えていました。 「決定的ではない:テストが実行されない」Visual Studio 2017 15.5.6
ReSharper Ultimate 2017.3.3 Build 111.0.20180302.65130
解決しようMicrosoft.NET.Test.Sdkへのプロジェクト依存関係の追加
これと同じ問題がありました。原因は、プロジェクトのビルド設定と互換性のない外部参照でした。解決するには、プロジェクト->プロパティ->ビルド->プラットフォームターゲット->任意のCPUからx86への変更を右クリックしました。
作業していた特定の* .dllはSystem.Data.SQLiteでした。その特定の* .dllは、32ビット操作用にハードコードされています。 「Any CPU」設定は、64ビットとしてロードしようとしました。
VS2010、NUnit 2.6.3(内部的にはReSharperは2.6.2を使用していると言っていますが?)、ReSharper 7.7.1およびNCrunch 2.5.0.12を使用しており、同じ "... test is inconsclusive ..."に遭遇しましたNUnitを使用しましたが、NCrunchはすべてが正常であると言いました。今日のほとんどの場合、NUnitとNCrunchは、どのテストが幸せでリファクタリングが必要かについて同意し、その後、まだ理解できないことが起こりました。しばらくの間、NCrunchはテストに失敗したと言いました合格)、その後、それらはすべて動作していると判断し、NUnitは同じメッセージ「..test is inconsclusive ...」を除くすべてのテストについて不満を言い始めました。 「決定的でない」と表示する)。
上記の提案をいくつか試してみましたが、ついにVS2010を閉じてソリューションを再開しました。出来上がり、私のすべてのテストが再び幸せになり、NCrunchとNUnitは同じ結果を再び報告します。残念ながら、何が変更されて同期が取れなくなるかわかりませんが、VS2010を閉じて再度開くと修正されたようです。
たぶん他の誰かがこれに遭遇し、この単純な(実際の修正がわからないので最終的に満足できない場合)ソリューションを使用できるようになるでしょう。
xUnit
を使用している場合、xunit.running.visualstudio
パッケージのインストールに関する問題を解決しました。 (現在xUnit 2.3.1
およびVS17 Enterprise 15.3.5
を使用)
App.Configファイルが見つからない(破損していない)ことが原因です。新規追加(追加->新規アイテム...->アプリケーション構成ファイル)で修正されました。
私の場合、私のテスト方法はプライベートでしたが、パブリックに変更し、機能しました。
私の場合、ReSharperはテストウィンドウで次の例外を追加しました。
2017.06.15 12:56:57.621 ERROR Exploration failed with the exception:
System.AggregateException: One or more errors occurred. ---> System.Threading.Tasks.TaskCanceledException: A task was canceled.
--- End of inner exception stack trace ---
at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
at JetBrains.ReSharper.UnitTestFramework.Launch.Stages.DiscoveryStage.Run(CancellationToken token)
---> (Inner Exception #0) System.Threading.Tasks.TaskCanceledException: A task was canceled.<---
最終的に、このエラーが発生したテストプロジェクトは両方ともConfiguration Managerでビルドするように設定されていませんでした。 2つのテストプロジェクトをビルドするチェックボックスをオンにして、再構築をソートしました。
私はまったく同じ問題を抱えていて、何も助けませんでした。
最終的に、ユニットプロジェクトとユニットテストプロジェクトの名前空間に不一致があることがわかりました。
ユニットプロジェクトの名前空間はunit.projectで、テストプロジェクトの名前はunit.project.testsですが、テストのデフォルトの名前空間はユニットと同じで、両方ともunit.projectでした。
名前空間を異なるものに更新したら(プロジェクトごとに1つの名前空間)、すべてが機能しました!
VS2013とResharper9でも同じエラーが発生しました。問題は、[Test]でテストメソッドに注釈を付けるのを忘れたためです:)これが誰にも役立つことを願っています
私の場合、unittestprojectから2つのプロジェクトを参照しました。両方の参照プロジェクトは、同じ名前のdllを使用しましたが、バージョンは異なります。
Visual Studioではこれに気付きませんでした。 Eventviewerでエラーに気付きました。
これを解決するには、unittestprojectのapp.configで bindingRedirect を使用して、dllバージョンを修正しました。
私のクラスのすべてのテストは、いくつかのコードの変更後に決定的ではなくなりました(以前に合格していました)。
テストクラスに新しいフィールドを追加したようです。
private readonly Foo _foo = CreateFoo();
問題は、 'CreateFoo()'内で例外がスローされることでした。そのため、すべてのテストで発生し、失敗する代わりにすべてが決定的になりませんでした。
非常に奇妙な動作。
最近app.configの下部に追加された新しいappsettingエントリを移動すると、問題が解決しました。
<appSettings>
<add key="xxxxxx" value="xxxxx" />
</appSettings>
これが誰かを助けることを願って
私にとっては、1つのテストでこのエラーが発生し、意図せずにテストをスキップしたことがわかりました。画面の左側でクリックしてブレークポイントを配置すると、テストがスキップされるように設定されていることがわかります(これを示すMicrosoftアイコンがあります)。テストを有効にすると、エラーはなくなりました。
私の場合、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の各オブジェクト配列には、DivideTestメソッドに3つのパラメーターがあるため、3でなければならない2つの項目があります。
XUnitとResharperを使用している場合は、XUnit拡張機能の更新を試みることができます(私のために働いた)。
私の場合、テスト方法が「静的」だったためです
この問題は、.NET Core 1.1.0にアップグレードしたときに始まりました。
テストプロジェクトのproject.jsonに次の依存関係を追加することで解決しました。
"Microsoft.DotNet.InternalAbstractions": "1.0.500-preview2-1-003177"
私にまったく同じことが起こっていた。最終的にVS2010から2013へのアップグレードを回避し、VSのリストに単体テストが表示されず、Resharperはそれらすべてを無視としてリストしました。ここにリストされているものはほとんど何も役に立たなかった。最終的に新しいユニットテストプロジェクトを作成し、古いものからすべての.csファイルを新しいものにコピーし、参照などを再作成すると、すべてが機能していました。私の推測では、テストプロジェクトの何かがアップグレード中に壊れたと思われます。
このエラーはVisual Studio 2017およびresharperバージョン2018.2.3で発生しましたが、修正はVisual Studio 2019バージョンに適用されます。
Resharperでテストを機能させるための修正は、執筆時点でResharperの最新バージョン(2019.2.1)に更新することでした。
私はこの問題にかなり苦労しましたが、上記の答えが私の問題を解決するものではないようです。
私は最終的に私の場合に理由を見つけました:
「テストの実行元」オプションにフォルダーを指定しました。フォルダーには、テストするDLLが含まれていません。
Resharper-> Options-> Tools-> Unit Testing、Generalの下のProject output folderを選択します。
VS2012を使用していて、これらのほとんどを実行しました。 specflowのアンインストールと再インストールを提案したヨーロッパのトップUV開発者に感謝します。これで問題は解決しました!
これが他の誰かに役立つことを願っています。
Nunitを使用している場合:
私にとっては、次のDLLが含まれていました。
nunit.core
nunit.framework
ただし、実際には次のようにする必要があります。nunit.framework
したがって、nunit.coreを削除し、すべて正常に機能しました。
使用可能な回答のいずれにも当てはまらない理由で同じ問題が発生しました。テストの1つ(最初に実行)で処理されたコードに"Environment.Exit(-1)"呼び出しが含まれていました。
このテストはAbortedとして報告され、ソリューション内の他のすべてのテストはOP質問のように「Inconclusive:not run」として報告されました。
私の場合、Configuration.dllという新しい参照の名前を変更する必要がありました。どうやらTypemockには独自のConfiguration.dll(素晴らしい名前付け!)があり、私のDLLによって混乱しているようです。
ReSharper Buildを使用してこれを修正しました。
ReSharper => Options => Tools => Build => General => Use ReSharper Build
一連の再起動、編集、調整を行った後
TestFramework
nugetパッケージをアップグレードして、次のパッケージを使用するようにしました。
<package id="Microsoft.VisualStudio.QualityTools.UnitTestFramework.Updated" version="15.0.26228" targetFramework="net461" />
私の場合は、TestCase内に\ r\n文字を渡すためでした。ほとんどの場合に機能するため、断続的な問題の原因は不明です。しかし、\ r\nを削除しても、テストは決定的ではありません。
[TestCase("test\r\n1,2\r\n3,4", 1, 2)]
public void My_Test(string message, double latitude, double longitude)
私の場合、ReSharper
を(v。10に)アップグレードする必要があったため、最新バージョンのNUnit(v。3.0)を使用できます
ReSharperは私に苦労しているので。 NUnit3 Test Adapterですばやくテストすることにしました
https://visualstudiogallery.msdn.Microsoft.com/0da0f6bd-9bb6-4ae3-87a8-537788622f2d
同様のシナリオがありました-すべてのテストが正常に実行され、さらに2、3を追加しましたが、突然R#10のVS2015でテストが実行されませんでした。
R#キャッシュをクリアし、app.configの変更を元に戻し、「テスト中のシャドウコピーアセンブリ」を削除し、クリーニング/再構築し、VSを再起動しました-まったく役に立ちませんでした。
最後に、古き良き時代の再起動で問題は解決しました。
私の場合(Visual Studio Community 2017バージョン15.2)、問題の原因はVS 2017で導入されたプロジェクトの新しいロード方法、つまり「Lightweight Solution Load」でした。
「Unit Test Sessions」ウィンドウで、ソリューションのテストのほうがはるかに少ないことに気付きました。 「ソリューションエクスプローラー」で各ユニットテストプロジェクトを手動で開く必要があり、そのときだけすべてのテストが読み込まれて合格しました。
これを解決する1つの方法は、「Solution Explorer」でソリューションを右クリックして「Lightweight Solution Load」を無効にし、「Disable Lightweight Solution Load」を設定することです。
今日も同じ問題に出会いました。この回答のいずれも役に立たない場合は、これを試してください:
コンソールアプリケーションでクラスライブラリを変換します。次に、ここで説明するLoaderExceptionsを見つけてみてください: Resharper Unit Test Runnerを診断する方法「要求されたタイプの1つ以上をロードできません」エラー
プロジェクトが例外なく開始する場合は、resharperを使用してテストを実行してみてください。 (クラスライブラリに戻すことなく)それは私のために働いた。
私にとって問題を解決したのは実行中です:
git clean -dfx
リポジトリで再構築します。
VS2013、Resharper 8.2、NUnit(Runner)2.6.3を使用しています。 Nugetを介してインストールされたnunitランナーを使用するようにResharperを構成しました。
Resharperを使用して単体テストを実行しようとすると、同じ「結論なし:テストは実行されませんでした」というエラーが表示されました。さまざまなソリューションを試した後、nunit.exeを起動しようとしましたが、「このアプリケーションを実行するには、最初に次のバージョンの.NET.Frameworkのいずれかをインストールする必要があります:V4.0.30319」というエラーがスローされました
.net framework 4.5のインストールを修復した後、すべてが再び正常に機能しました。
私の場合、VSは管理者権限で開始されませんでした。
VSを終了し、「管理者として実行」を選択すると、この問題は修正されます。
これが発生する可能性があるもう1つの方法、テスト自体の特定の種類のランタイムエラーをスローするだけです。
値をテストしているプロパティ(VisualStudioTestingExtensionsを使用)で、キャッチされていないスタックオーバーフロー例外が発生しました。サブオブジェクトのIsFooをチェックするSelectを備えたプロパティ(「IsFoo」など)がありました。しかし、誤ってfoo.Select(x => IsFoo)
の代わりにfoo.Select(x => x.IsFoo)
がありました。
そのため、1つのテストで「テストメソッドが決定的ではない...」と表示された場合は、必ずデバッグも実行してください。これは、この特定の問題であるかどうかを明らかにします(例外ポイントで停止するため)。