0

これはVisual Studio for Macには存在しない機能かもしれませんが、何か間違っている。デバッグを行わずにASP.NET Coreプロジェクトを実行した後にテストを実行すると、テストを実行する前にプロジェクトが実行されなくなる

私はスタートアッププロジェクトとしてASP.NET Core MVCプロジェクトを設定しています。

また、.NETテストを実行するためにSeleniumを使用する.NET Core 2.0を対象とした単体テストがあります。これらのテストを実行するには、まずテストを実行する前にASP.NET Core MVCを実行しておく必要があります。そうしないと、アプリケーションが実行されていないため失敗します。

Visual StudioのPC版では、[デバッグ]メニューの[デバッグなしで開始]オプションは、期待どおりにWebアプリを起動します。私のブラウザは私のアプリに開きます。テストが実行されていることを確認したら、問題なくテストを実行できます(テストエクスプローラを使用)。

Visual StudioのMac版では、[デバッグ]メニューの[デバッグなしで起動]オプションを使用すると、Webアプリが正常に起動します。私のブラウザは私のアプリに開きます。私はそれが実行されていることを確認した後、私はテストを実行しようとします。テストは実行されますが、実行する前に実行中のアプリプロセスが強制終了されます。アプリはもはや実行されていないので、テストは失敗します。

TL; DR:

私のソリューション:ここではセレン

を使用して

  • ASP.NETコアMVCプロジェクト
  • .NETのコアユニットテストプロジェクトが手順ですVSの両方のインスタンスで:

    • をクリックし、「デバッグ」アプリがブラウザに表示するための(PC)または「ファイル名を指定して実行」(Mac)を
    • クリック
    • 「デバッグなしで開始」を待ち(それを閉じていない)
    • ゴーへテストエクスプローラ(PC)やユニットテスト(マック)
    • ランは、UIのスイートは期待

    をテスト:テストはPCとMac版

    実際の両方に合格:テストはWebアプリケーションので、Mac版で失敗しますプロセスはテストが実行される前に殺された

    私は達成しようとしていることを達成するためのどのような提案がありますか?

答えて

1

Visual Studio Macソースコードを見ると、これを防ぐための制限があります。 Visual Studio for Macは、実行したすべてのアプリケーションの履歴を保持しており、単体テストを実行しようとすると、これらのアプリケーションを終了しようとします。

これをVisual Studio for Mac 7.1でテストすると、テストを実行するときにメッセージダイアログボックスAn application is already running and will have to be stopped. Do you want to continue?が表示されます。

コードを変更せずに回避できるのはこれだけです。

回避策:

  1. は、Mac用のVisual Studioの別のインスタンスを実行し、Webアプリケーションを起動するために1を使用し、他のテストを実行します。
  2. 実行時にテスト自体からWebアプリケーションを起動します。
  3. Webプロジェクトと単体テストプロジェクトの両方を実行する実行構成を作成します。しかし、ユニットテストに何らかの遅延を加える必要があるのは、ウェブプロジェクトと同時に開始するからです。

オプション3の詳細を表示するには、実行コンフィギュレーションを右クリックし、[オプション]を選択します。次に、ソリューションオプションで、実行コンフィギュレーションセクションで実行コンフィギュレーションを作成します。それからそれを選択し、Webプロジェクトと単体テストプロジェクトをチェックします。ステータスバーでは、実行設定が必要です。これは、Visual Studio for Macでユニットテストプロジェクトを実行できる場合に有効です。 NUnitを使用する単体テストプロジェクトをスタートアッププロジェクトとして設定し、実行することでテストが実行されます。

関連する問題