dotnet-watch
في مشروع كما هو موصوف "تطوير تطبيقات ASP.NET الأساسية باستخدام مراقب الملفات" ، وعلى وجه التحديد لا يكتشف قسم تشغيل الاختبارات باستخدام dotnet watch
إضافات الملف الجديد.
قم بإنشاء دليل للمشروع:
mkdir DotNetWatcherIssueDemo
التغيير إلى دليل المشروع:
cd DotNetWatcherIssueDemo
ابدأ بمشروع اختبار جديد:
dotnet new nunit
قم بتشغيل VS Code في الدليل الذي يحتوي على مشروع الاختبار:
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
natemcmaster / cc
بناءً على التعليق التالي في الكود ، من الواضح أن هذا خطأ وينقصه:
أقول خطأ لأنه إذا كان قيدًا فلن يتم توثيقه في أي مكان.
أي تقدم في هذا؟
+1 لهذا.
لقد حصلت على إعداد رائع لسير العمل مع Verify ، مما يسمح لي فقط بالتكرار في الاختبارات ، والموافقة على المخرجات وإعادة تشغيل الاختبارات. الجزء الوحيد الذي ينقصني هو عندما أرغب في توسيع مجموعة الاختبار الخاصة بي بملفات جديدة.
الحل البديل هو الاستمرار في إضافة فئات الاختبار في نفس الملف ثم تقسيمها لاحقًا ، ولكنه أمر مؤلم بعض الشيء. تحرير: ليس سيئًا للغاية مع إعادة البناء السريع لنقل الفصل إلى ملف جديد عندما تقوم بطردهم لاحقًا.
التعليق الأكثر فائدة
بناءً على التعليق التالي في الكود ، من الواضح أن هذا خطأ وينقصه:
https://github.com/aspnet/AspNetCore/blob/1f050242559e7b90ff6c4ee7f99d92b3a5af5a62/src/Tools/dotnet-watch/src/Internal/MsBuildFileSetFactory.cs#L66 -L67
أقول خطأ لأنه إذا كان قيدًا فلن يتم توثيقه في أي مكان.