web-dev-qa-db-ja.com

バグ:VS2017 Live Unit Testing-マイナスのみ-動作しません

TL; DR;編集6:私はそれを絞り込み、問題/バグを再現するための5つのステップを提供しました。

  1. VS2017 c#コンソールアプリ(.Netフルフレームワーク)を作成する
  2. Program.csにメソッドを追加し、クラスをパブリックにします。

_public class Program
{
    static void Main(string[] args)
    {
    }

    public int Add(int a, int b)
    { 
        return a + b;
    }
}
}
_
  1. Addメソッドを右クリックし、ユニットテストの作成を選択します。

 enter image description here 

  1. これらの設定を使用して、テストで新しいユニットテストプロジェクトを作成します。

 enter image description here 

  1. 単体テストを追加する

_[TestMethod()]
public void AddTest()
{
    Program p = new Program();
    var r = p.Add(1, 2);

    Assert.IsTrue(3 == r);
}
_
  • テストメニュー>ライブユニットテスト>開始
  • AddTest()上のコンテキストメニュー>ライブテスト>含める

次に、Addの+シンボルを-に変更します

Live Unit Testingは動作し、-記号を+に戻しますライブテストに合格しました!!

Nugetへの参照の追加DLL(だれでも実行できます)-Live Unit Testingは動作しません!または、ソリューションを閉じて再度開き、ライブユニットテストは機能しなくなりました!


MSUnitTest v2プロジェクトをセットアップし、Live Unit Testingを開始しました。 Web Api 2 .Netプロジェクト(フルフレームワークv4.5.2)を使用しています。

マイナス記号はいたるところにありますが、ティックやクロスはありません。

Visual Studio 2017のビデオの Live Unit Testingと同じようにコードを変更します マイナスのクロックが表示されますが、その後は何も表示されません...

 enter image description here 

単体テストは、デバッグすると合格します。

 enter image description here 

マウスを青いマイナスの上に置くと、メッセージは「Covered by 0 Tests」です

MSTest.TestAdapterおよびMSTest.TestFrameworkが必要であることがわかりました https://developercommunity.visualstudio.com/content/problem/5520/live-unit-test-are-only-showing-minuses-using-micr.html を実行し、両方のV1を参照しています.18:

  • Microsoft.VisualStudio.TestPlatform.TestFramework
  • Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions

同じ問題を報告した多くのベータテスターがいます:

https://developercommunity.visualstudio.com/content/problem/4510/live-unit-testing-doesnt-do-anything-1.html

https://developercommunity.visualstudio.com/content/problem/2737/live-unit-testing-doesnt-do-anything.html

https://developercommunity.visualstudio.com/content/problem/4376/live-unit-testing-doesnt-work.html

https://developercommunity.visualstudio.com/content/problem/2527/live-unit-testing-doesnt-work-for-projects-that-im.html

すべての投稿が解決されるか、修正されません。

この StackoverflowユーザーはLive Unit Testingで問題が発生しましたが、Null Exception 問題です。コメントの ソリューションを試しました Microsoft.VisualStudio.QualityTools.UnitTestFrameworkをGacから削除し、C:\ Windows\Assemblyからアンインストールしようとしたときに、アクセスが拒否され、開発者コマンドプロンプトからアンインストールしました:

_GacUtil /u Microsoft.VisualStudio.QualityTools.UnitTestFramework
_

結果:

アセンブリ:Microsoft.VisualStudio.QualityTools.UnitTestFramework、Version = 10.0.0.0、Culture = neutral、PublicKeyToken = b03f5f7f11d50a3a、processorArchitecture = MSILアンインストール不可:1つ以上のアプリケーションでアセンブリが必要です

誰かがLive Unit Testingを動作させるのを手伝ってくれますか?

編集1:

VS>ツール>オプション>ライブユニットテストで、ログをVerboseに切り替えました。

出力を見て、私は1つの警告を見ました:

[15:48:26.521詳細]-TestDriver-TestDiscovererログメッセージ:警告-構成システムの初期化に失敗しました

this のいくつかの回答を読んだ後、まだ「構成システムの初期化に失敗しました」を取り除くことができませんでした-これが赤いニシンであるかどうかわからない、私が見つけた唯一の手がかり遠い...

編集2:

VS2017を管理者として実行しましたが、「構成システムの初期化に失敗しました」を取り除きました。残念ながら、管理者として実行しても違いはありません。それでも動作しませんが、例外が発生しても失敗しません。


詳細ログは次のとおりです。 「テストディスカバリを開始する準備」が、私が含めたx86テストを見つけたように見えるのは興味深いことです。

ただし、テストを明らかに発見することはできません。 「発見された0個のテスト」

_[16:52:55.110 Verbose] - Aggregator - Calculating the set of tests that cover 1 files  
[16:52:55.110 Verbose] - Aggregator - [Workflow 4] Sending TestRequestEvent with 6 assemblies and 0 tests  
[16:52:55.110 Verbose] - TestDriver - [Workflow 4] Received TestRequestEvent  
[16:52:55.110 Verbose] - TestDriver - [Workflow 4] Preparing to start test discovery (X64: 0, X86: 1).  
[16:52:55.110 Verbose] - TestDriver - [Workflow 4] Start discovering tests from group 0, which contains 1 assemblies.  
[16:52:55.599 Verbose] - TestDriver - [Workflow 4] Finished discovering test from group 0.  
[16:52:55.599 Verbose] - TestDriver - [Workflow 4] Discovered 0 tests from XYZ.API.ClientService\bin\Debug\XYZ.API.ClientService.dll, updating cached data.  
[16:52:55.599 Verbose] - TestDriver - [Workflow 4] Notify Aggregator about completion of test run. (Passed: 0, Failed: 0, Run succeeded: True)  
[16:52:55.599 Verbose] - Aggregator - [Workflow 4] Received TestResponseEvent (TestRunCompleted)  
[16:52:55.599 Verbose] - Aggregator - [Workflow 4] Coverage data for 0 tests was received during this workflow  
[16:52:55.600 Verbose] - BuildManager - Allow to send a single build event.  
[16:52:55.599 Verbose] - Aggregator - Starting coverage aggregation cycle - work list has 3 methods  
[16:52:55.599 Verbose] - Aggregator - Finished coverage aggregation cycle - work list had 3 methods of which 3 methods were defined in 2 open files  
[16:52:55.600 Verbose] - BuildManager - Interrupting build queue -> no new assemblies.  
[16:52:55.600 Verbose] - StatusMargin - Received file coverage result  
[16:52:55.599 Verbose] - Aggregator - Sending FileCoverageResult for 'C:\XYZProjectCollection\XYZ\XYZ.API.ClientService\Repositories\ValueRepository.cs - C:\XYZProjectCollection\Lincoln\XYZ.API.ClientService\XYZ.API.MiscService.csproj'
[16:52:55.599 Verbose] - Aggregator - [Workflow 4] Sending TestRunCompletedEvent  
_

編集3:

今日、ProcessMonitorのトレースを確認しました。本当に目立ったものは何もありませんでした。

私は本当にロックダウンされた環境で作業しているので、vs2017のインストール中に何かがブロックされた可能性があります。 Unity3Dドメインはダウンロード用のホワイトリストに登録されていません。すべてのコアVisual Studio Microsoftのものがインストールされますが。私は診断トラブルシューティング戦略を使い果たし始めています。どんなアイデアでも大歓迎です!

編集4:

今朝、GACから_Microsoft.VisualStudio.QualityTools.UnitTestFramework_ DLL)を取り除くことにしました。 アクセス拒否を克服するためのこれらの指示に従ってそれを行いました

 enter image description here 

これにより、潜在的な根本原因の1つが見つかりました。 Live Unit Testing Loggingの出力を見始めました:

_[09:44:59.053 Verbose] - BuildManager - C:\Program Files x86\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets(3245,5): error MSB3491: Could not write lines to file "C:\XYZProjectCollection\Lincoln\.vs\XYZ.API\18528\i\XYZ.API.MiscService\Debug\CoreCompileInputs.cache". Access to the path 'C:\XYZProjectCollection\Lincoln\.vs\XYZ.API\18528\i\XYZ.API.MiscService\Debug\CoreCompileInputs.cache' is denied.   
[09:44:59.053 Verbose] - BuildManager - C:\Program Files x86\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets(4874,5): error MSB3491: Could not write lines to file "C:\XYZProjectCollection\Lincoln\.vs\XYZ.API\18528\i\XYZ.API.MiscService\Debug\XYZ.API.MiscService.csproj.FileListAbsolute.txt". Access to the path 'C:\XYZProjectCollection\Lincoln\.vs\XYZ.API\18528\i\XYZ.API.MiscService\Debug\XYZ.API.MiscService.csproj.FileListAbsolute.txt' is denied.
_

許可の問題を除外するために、これらすべてのディレクトリに許可を与えました。

 enter image description here 

これはまだ機能しませんが、Live Unit Testsがnot作業(つまり、マイナスの上部に表示される時計処理に時間がかかります)。

その後、ProcMonを再度試したところ、いくつかの興味深いログが表示されましたが、喫煙銃はありませんでした。

現在の詳細ログは次のとおりです。

_[10:22:07.363 Info] - BuildManager - Build completed (succeeded).
[10:22:07.363 Verbose] - BuildManager - Interrupting build queue -> switching 'build' and 'test' directories.
[10:22:07.363 Verbose] - BuildManager - New 'test' directory: C:\XYZProjectCollection\Lincoln\.vs\XYZ.API\18528\1\
[10:22:07.363 Verbose] - BuildManager - New 'build' directory: C:\XYZProjectCollection\Lincoln\.vs\XYZ.API\18528\0\
[10:22:07.363 Verbose] - Aggregator - [Workflow 4] Received BuildEvent.
[10:22:07.363 Verbose] - Aggregator - Assembly: C:\XYZProjectCollection\Lincoln\.vs\XYZ.API\18528\t\XYZ.API.Tests\bin\Debug\XYZ.API.Tests.dll
[10:22:07.363 Verbose] - Aggregator - Assembly: C:\XYZProjectCollection\Lincoln\.vs\XYZ.API\18528\t\XYZ.API.AccountClientService\bin\Debug\XYZ.API.AccountClientService.dll
[10:22:07.363 Verbose] - Aggregator - Assembly: C:\XYZProjectCollection\Lincoln\.vs\XYZ.API\18528\t\XYZ.API\bin\XYZ.API.dll
[10:22:07.363 Verbose] - Aggregator - Assembly: C:\XYZProjectCollection\Lincoln\.vs\XYZ.API\18528\t\XYZ.API.Helpers\bin\Debug\XYZ.API.Global.dll
[10:22:07.363 Verbose] - Aggregator - Assembly: C:\XYZProjectCollection\Lincoln\.vs\XYZ.API\18528\t\XYZ.API.MiscService\bin\Debug\XYZ.API.MiscService.dll
[10:22:07.363 Verbose] - Aggregator - file: 'C:\XYZProjectCollection\Lincoln\XYZ.API.MiscService\Repositories\ValueRepository.cs - C:\XYZProjectCollection\Lincoln\XYZ.API.MiscService\XYZ.API.MiscService.csproj'
[10:22:07.363 Verbose] - Aggregator - Skip reading spans for Assembly C:\XYZProjectCollection\Lincoln\.vs\XYZ.API\18528\t\XYZ.API.Tests\bin\Debug\XYZ.API.Tests.dll with MVID c96c0f4b-b21e-47be-a71e-97ebf8a3d493 since we already have this information from a previous build
[10:22:07.363 Verbose] - Aggregator - Skip reading spans for Assembly C:\XYZProjectCollection\Lincoln\.vs\XYZ.API\18528\t\XYZ.API.AccountClientService\bin\Debug\XYZ.API.AccountClientService.dll with MVID 6772f896-04ab-4804-bb18-3ed2c7aeb9b9 since we already have this information from a previous build
[10:22:07.363 Verbose] - Aggregator - Skip reading spans for Assembly C:\XYZProjectCollection\Lincoln\.vs\XYZ.API\18528\t\XYZ.API\bin\XYZ.API.dll with MVID 9c862440-c16a-4efe-8574-76e8c1453c4d since we already have this information from a previous build
[10:22:07.363 Verbose] - Aggregator - Skip reading spans for Assembly C:\XYZProjectCollection\Lincoln\.vs\XYZ.API\18528\t\XYZ.API.Helpers\bin\Debug\XYZ.API.Global.dll with MVID a8899d5d-4730-46bf-b4f2-3c2b1b75b0b1 since we already have this information from a previous build
[10:22:07.363 Verbose] - Aggregator - Removing MVID f337ca44-aae6-42ca-8df5-3776ff962372 for project C:\XYZProjectCollection\Lincoln\XYZ.API.MiscService\XYZ.API.MiscService.csproj from the file span cache
[10:22:07.363 Verbose] - Aggregator - Adding MVID 8e944276-0eec-43f4-aff3-07e40f8611dc for project C:\XYZProjectCollection\Lincoln\XYZ.API.MiscService\XYZ.API.MiscService.csproj to the file span cache
[10:22:07.363 Verbose] - Aggregator - Calculating the set of tests that cover 0 files
[10:22:07.363 Verbose] - Aggregator - Reading spans for Assembly C:\XYZProjectCollection\Lincoln\.vs\XYZ.API\18528\t\XYZ.API.MiscService\bin\Debug\XYZ.API.MiscService.dll with MVID 8e944276-0eec-43f4-aff3-07e40f8611dc
[10:22:07.363 Verbose] - Aggregator - Adding 3 methods from 'C:\XYZProjectCollection\Lincoln\XYZ.API.MiscService\Repositories\ValueRepository.cs - C:\XYZProjectCollection\Lincoln\XYZ.API.MiscService\XYZ.API.MiscService.csproj' to the coverage aggregation work list
[10:22:07.363 Verbose] - Aggregator - Calculating the set of tests that cover 1 files
[10:22:07.363 Verbose] - Aggregator - [Workflow 4] Sending TestRequestEvent with 5 assemblies and 0 tests
[10:22:07.363 Verbose] - TestDriver - [Workflow 4] Received TestRequestEvent
[10:22:07.363 Verbose] - TestDriver - [Workflow 4] Preparing to start test discovery (X64: 0, X86: 1).
[10:22:07.363 Verbose] - TestDriver - [Workflow 4] Start discovering tests from group 0, which contains 1 assemblies.
[10:22:07.834 Verbose] - TestDriver - [Workflow 4] Finished discovering test from group 0.
[10:22:07.834 Verbose] - TestDriver - [Workflow 4] Discovered 0 tests from XYZ.API.MiscService\bin\Debug\XYZ.API.MiscService.dll, updating cached data.
[10:22:07.834 Verbose] - TestDriver - [Workflow 4] Notify Aggregator about completion of test run. (Passed: 0, Failed: 0, Run succeeded: True)
[10:22:07.834 Verbose] - Aggregator - [Workflow 4] Received TestResponseEvent (TestRunCompleted)
[10:22:07.834 Verbose] - Aggregator - [Workflow 4] Coverage data for 0 tests was received during this workflow
[10:22:07.834 Verbose] - Aggregator - Starting coverage aggregation cycle - work list has 3 methods
[10:22:07.834 Verbose] - Aggregator - Finished coverage aggregation cycle - work list had 3 methods of which 3 methods were defined in 5 open files
[10:22:07.834 Verbose] - BuildManager - Allow to send a single build event.
[10:22:07.834 Verbose] - BuildManager - Interrupting build queue -> no new assemblies.
[10:22:07.834 Verbose] - Aggregator - Sending FileCoverageResult for 'C:\XYZProjectCollection\Lincoln\XYZ.API.MiscService\Repositories\ValueRepository.cs - C:\XYZProjectCollection\Lincoln\XYZ.API.MiscService\XYZ.API.MiscService.csproj'
[10:22:07.834 Verbose] - Aggregator - [Workflow 4] Sending TestRunCompletedEvent
[10:22:07.850 Verbose] - StatusMargin - Received file coverage result
_

編集5:

このブログによると: https://blogs.msdn.Microsoft.com/visualstudio/2017/03/09/live-unit-testing-in-visual-studio-2017-enterprise/

Q:ライブテストセットにテストを含めたり除外したりしても何も起こらないのはなぜですか?

A:これは既知の問題であり、Visual Studio 2017バージョン15.0では修正できませんでした。 Visual Studio 2017バージョン15.2で修正されました。

Visual Studio/15.0.0 +26228.9があります。 Visual Studio 2017(v15.2)にアップグレードすると、DOES[〜#〜] not [〜#〜]が問題を修正します。

私はこの問題を https://developercommunity.visualstudio.com に報告しており、全員に投稿し続けます。環境がロックされていると正しく報告されませんでした。

41
Jeremy Thompson

更新:MSは15.3.2で修正されたと言う

https://social.msdn.Microsoft.com/Forums/vstudio/en-US/9f5a5c01-052b-4b6a-94c5-70aae9cdf843/vs2017-live-unit-testing-only-minuss?forum=vsunittest


わかりました、絞り込みました。

単体テストプロジェクトにNuGet参照を追加すると、いくつかのシナリオでpackages.config[〜#〜] and [〜#〜]が追加されますmightApp.Configファイルを追加します。

Oracle.ManagedDataAccessを追加すると、次がApp.Configに追加されます。

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <!--<configSections>
    <section name="Oracle.manageddataaccess.client"
      type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
    </configSections>-->
  <system.data>
    <DbProviderFactories>
      <remove invariant="Oracle.ManagedDataAccess.Client"/>
      <add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver"
        type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
    </DbProviderFactories>
  </system.data>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-Microsoft-com:asm.v1">
      <dependentAssembly>
        <publisherPolicy apply="no"/>
        <assemblyIdentity name="Oracle.ManagedDataAccess" publicKeyToken="89b483f429c47342" culture="neutral"/>
        <bindingRedirect oldVersion="4.121.0.0 - 4.65535.65535.65535" newVersion="4.122.1.0"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
  <Oracle.manageddataaccess.client>
    <version number="*">
      <dataSources>
        <dataSource alias="SampleDataSource" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(Host=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL))) "/>
      </dataSources>
    </version>
  </Oracle.manageddataaccess.client>
</configuration>

<!-<configSections ... configSections>->をコメントアウトしたことに注意してください。 Live Unit Testingが失敗する原因となるApp.Configタグ。

3
Jeremy Thompson

他の人が述べたように、この機能はまだ少しバグがあります。しかし、機能をオンにして、テストエクスプローラーウィンドウに注意を払うだけでかなり幸運でした-少なくとも私のボックスでは、コードエディターのガターに「マイナス記号」があってもテストを実行します。ただし、この機能は正常に動作します。

私はこの機能を使い続け、できる限りマイクロソフトにフィードバックを送り続けます(Visual Studioのメニューバーに[フィードバックを送信]ボタンがあるはずです)。

更新:
既存のプロジェクトを使用すると、エディターのガターにUIがまったく表示されません...バージョン15.3.4がインストールされています。 Live Unit Testsにソリューション全体を含め、再構築します...出力ウィンドウに次のメッセージが表示されます。

[11:42:17.584 Info] No supported test adapters are referenced by this solution. If you have a test project, add a NuGet reference to a test adapter corresponding to the test framework used in order to run the tests. If you already have the required NuGet reference in your test project, performing a NuGet restore may resolve the issue.

更新2:テストケースとして新しいプロジェクトを作成し、configsectionsタグを追加するNuGetパッケージを含める手順に従って、問題を再現することができました。うまくいけば混乱を招くことはありませんが、除外されたテスト/マイナス記号の問題whenconfigsectionsタグがコメントアウトされた(およびOracleパッケージがインストールされました)。

1
ryanwebjackson

V15.5.6でも同じ問題に直面しました。解決策は[ツール] | [ライブユニットテスト|永続データを削除します。

1
Mister Cook

この機能は素晴らしいと思います。ただし、それほど新しいものではありません(参照: http://www.ncrunch.net/ )。

また、1つの問題があり、私はそれに遭遇しました。あなたと同じような問題です。 複数の単体テストプロジェクトがありますか?はいの場合は、ソリューション全体のNugetパッケージを確認する必要があります。ソリューションを右クリックし、[ソリューションのNugetパッケージを管理...]をクリックします。[統合]タブをチェックし、同じバージョンがインストールされていることを確認します次のすべてのテストプロジェクト:

  • MSTest.TestAdapter
  • MSTest.TestFramewor

以下に、間違ったセットアップのスクリーンショットを示します。これにより、Liveユニットテスト機能全体が失敗します。

enter image description here

すべてのプロジェクトを同じバージョンに更新すると、動作するはずです。しかし、念のために:

  • VSを再起動する
  • ライブユニットテストを開始する前に、プロジェクトフォルダー.vs \\ lutに移動し、LUT(ライブユニットテスト)フォルダー全体を削除できます。無効なキャッシュデータが含まれている可能性があります。

役に立てば幸いです。

1
Major

クラスライブラリプロジェクトとテストプロジェクトを含む簡単なソリューションで同じ問題が発生していました。どうやら私のテストプロジェクトはLive Unit Testingから除外されたようです。プロジェクトを含めると(プロジェクトを右クリックして、[ライブユニットテスト]> [含める])、アイコンが正しく機能しました。これで問題は解決しましたが、テストクラスのすべてのコード行にライブテストアイコンを配置することの価値は明確ではありません。

0
rjax

私はこの正確な問題を抱えていたので、Visual Studio 15.7.3に更新し、[テスト]> [ライブユニットテスト]> [オプション]を選択して[永続データの削除]を実行することでこれを機能させることができました。

0
AaronV