「ファイルウォッチャーを使用してASP.NETCoreアプリを開発する」 、特にdotnet watch
を使用してテストを実行する」セクションで説明されているプロジェクトのdotnet-watch
は、新しいファイルの追加を検出しません。
プロジェクトのディレクトリを作成します。
mkdir DotNetWatcherIssueDemo
プロジェクトディレクトリに移動します。
cd DotNetWatcherIssueDemo
新しいテストプロジェクトで初期化します。
dotnet new nunit
テストプロジェクトを含むディレクトリでVSCodeを起動します。
code .
プロジェクトを監視し、変更についてテストを実行するように依頼します。
dotnet watch test
この段階で、次の出力が表示されます。
watch : Started
Build started, please wait...
Build completed.
Test run for A:\temp\DotNetWatchIssueDemo\bin\Debug\netcoreapp2.2\DotNetWatchIssueDemo.dll(.NETCoreApp,Version=v2.2)
Microsoft (R) Test Execution Command Line Tool Version 15.9.0
Copyright (c) Microsoft Corporation. All rights reserved.
Starting test execution, please wait...
Total tests: 1. Passed: 1. Failed: 0. Skipped: 0.
Test Run Successful.
Test execution time: 0.9364 Seconds
watch : Exited
watch : Waiting for a file to change before restarting dotnet...
ここで、新しいテストをUnitTest1.cs
追加します。
diff --git a/UnitTest1.cs b/UnitTest1.cs
index 66ec70e..f6406e7 100644
--- a/UnitTest1.cs
+++ b/UnitTest1.cs
@@ -14,5 +14,11 @@ namespace Tests
{
Assert.Pass();
}
+
+ [Test]
+ public void Test2()
+ {
+ Assert.Pass();
+ }
}
}
\ No newline at end of file
dotnet watch
は変更を取得し、_two_テストを正常に実行し、さらにファイルの変更を監視し続けます。
watch : Started
Build started, please wait...
Build completed.
Test run for A:\temp\DotNetWatchIssueDemo\bin\Debug\netcoreapp2.2\DotNetWatchIssueDemo.dll(.NETCoreApp,Version=v2.2)
Microsoft (R) Test Execution Command Line Tool Version 15.9.0
Copyright (c) Microsoft Corporation. All rights reserved.
Starting test execution, please wait...
Total tests: 2. Passed: 2. Failed: 0. Skipped: 0.
Test Run Successful.
Test execution time: 0.9698 Seconds
watch : Exited
watch : Waiting for a file to change before restarting dotnet...
別のシェルで、 cd
をプロジェクトディレクトリに追加し、新しいテストファイルを追加します。
dotnet new nunit-test -n UnitTest2 -o .
最後のステップで、 dotnet watch
が新しいファイルの変更を取得し、すべてのテストをビルドして再実行することを期待しましたが、何もしません。
ファイルの静的リストを作成し、それらの変更のみを監視しているようです。 プロジェクトファイル( DotNetWatcherIssueDemo.csproj
)をタッチ/強制保存すると、 dotnet watch
は変更を検出し、監視リストを再構築して、追加されたファイルへの変更を検出しますが、新しいファイルについては検出しません。その後、ファイルが追加されました。
dotnet --info
出力:
.NET Core SDK (reflecting any global.json):
Version: 2.2.101
Commit: 236713b0b7
Runtime Environment:
OS Name: Windows
OS Version: 10.0.17134
OS Platform: Windows
RID: win10-x64
Base Path: C:\Program Files\dotnet\sdk\2.2.101\
Host (useful for support):
Version: 2.2.0
Commit: 1249f08fed
.NET Core SDKs installed:
1.1.8 [C:\Program Files\dotnet\sdk]
1.1.9 [C:\Program Files\dotnet\sdk]
1.1.10 [C:\Program Files\dotnet\sdk]
1.1.11 [C:\Program Files\dotnet\sdk]
2.1.101 [C:\Program Files\dotnet\sdk]
2.1.103 [C:\Program Files\dotnet\sdk]
2.1.104 [C:\Program Files\dotnet\sdk]
2.1.200 [C:\Program Files\dotnet\sdk]
2.1.201 [C:\Program Files\dotnet\sdk]
2.1.202 [C:\Program Files\dotnet\sdk]
2.1.300 [C:\Program Files\dotnet\sdk]
2.1.400 [C:\Program Files\dotnet\sdk]
2.1.402 [C:\Program Files\dotnet\sdk]
2.1.403 [C:\Program Files\dotnet\sdk]
2.1.500 [C:\Program Files\dotnet\sdk]
2.1.502 [C:\Program Files\dotnet\sdk]
2.2.101 [C:\Program Files\dotnet\sdk]
.NET Core runtimes installed:
Microsoft.AspNetCore.All 2.1.0 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.2 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.4 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.5 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.1.6 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.2.0 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.App 2.1.0 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.2 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.4 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.5 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.1.6 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.2.0 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.NETCore.App 1.0.10 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 1.0.11 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 1.0.12 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 1.0.13 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 1.1.7 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 1.1.8 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 1.1.9 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 1.1.10 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.0.6 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.0.7 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.0.9 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.0 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.2 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.4 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.5 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.1.6 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 2.2.0 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
To install additional .NET Core runtimes or SDKs:
https://aka.ms/dotnet-download
/ cc @natemcmaster
コード内の次のコメントに基づくと、これは明らかにバグであり、欠けています。
それが制限であるなら、それはどこにも文書化されていないので、私はバグを言います。
これについて何か進展はありますか?
このために+1。
私はVerifyを使用した非常に優れたワークフロー設定を持っているので、テストを繰り返し、出力を承認し、テストを再実行することができます。 足りないのは、テストスイートを新しいファイルで拡張したいときだけです。
回避策は、テストクラスを同じファイルに追加し続け、後でそれらを分割することですが、少し面倒です。 編集:後でノックアウトするときにクラスを新しいファイルに移動するための迅速なリファクタリングでそれほど悪くは
最も参考になるコメント
コード内の次のコメントに基づくと、これは明らかにバグであり、欠けています。
https://github.com/aspnet/AspNetCore/blob/1f050242559e7b90ff6c4ee7f99d92b3a5af5a62/src/Tools/dotnet-watch/src/Internal/MsBuildFileSetFactory.cs#L66 -L67
それが制限であるなら、それはどこにも文書化されていないので、私はバグを言います。