Bài kiểm tra đơn vị không được phát hiện trong Visual Studio 2017


213

Tôi đã vật lộn với VS 2017 kể từ khi tôi cài đặt nó. Bây giờ có vẻ như Bài kiểm tra đơn vị sẽ chỉ chạy từ dòng lệnh "kiểm tra dotnet".

Dự án của tôi là .NET Core 1.1.1. Tôi đã cài đặt SDK và cập nhật khung cho 1.1.1.

Tôi đã thử mẫu tại MSDN ( https://msdn.microsoft.com/en-us/l Library / ms182532.aspx ) cũng thất bại chính xác theo cách tương tự.

Tất cả các gói NuGet cho các thử nghiệm và dự án chính là hiện tại. Và cả dự án thử nghiệm và xây dựng dự án chính đều không có lỗi. Một bài kiểm tra chạy thành công từ dòng lệnh.

Có ai đã nhận được Bài kiểm tra đơn vị để chạy trong VS 2017, nếu vậy thì thế nào?

Cảm ơn, John


Cập nhật - Mở rộng

Dưới đây là một ví dụ về một dự án thử nghiệm đơn giản không hoạt động trên GitHub . Đây là một ví dụ với xUnit nhưng tôi đã thử NUnit và visual studio được xây dựng trong các bài kiểm tra MS. Bất kể thử nghiệm nào hoặc thay đổi gì tôi thực hiện, tôi không thể có được người chạy thử nghiệm VS để tìm bất kỳ thử nghiệm nào.

Những gì tôi đã thử

  • Xóa các tập tin bộ đệm thử nghiệm VS DEL %TEMP%\VisualStudioTestExplorerExtensions
  • Khởi động lại VS
  • Đóng / Mở thử nghiệm thám hiểm
  • cho xUnit được cài đặt Microsoft.DotNet.InternalAbstractions( xem bài SO )
  • đối với NUnit, đảm bảo bộ điều hợp được cài đặt và cùng phiên bản (3) với gói NUnit
  • test -> test settings -> default processor architecture được đặt thành x86

Câu hỏi
Bất cứ ai cũng có thể vui lòng cung cấp một ví dụ hoạt động của giải pháp .Net Core 1.1.0 trong VS2017 (tệp dự án .csproj) trong đó trình khám phá thử nghiệm VS tìm thấy thành công các thử nghiệm đơn vị HOẶC cho tôi biết vấn đề trong ví dụ đã cho.


Tôi phát hiện ra rằng VS2017 không cài đặt tất cả các gói cần thiết. Khi tôi cố gắng chuyển MonoGame của mình từ PC cũ sang PC mới với windows 10 và VS 2017 mới cài đặt, nó bắt đầu xuất hiện các lỗi lạ về các gói bị thiếu. Sau khi cài đặt VS2015 cùng với VS2017, mọi vấn đề đã biến mất. Có thể thử cài đặt bổ sung VS2015.
Mateusz

2
Hãy thử cài đặt các gói Kiểm tra với trình cài đặt Visual Studio
Markiian Benovskyi 17/03/2017

Tôi đang xem xét nếu VS 2017 có tất cả các biến môi trường được đặt chính xác.
John Pezzanite 17/03/2017

1
Đối với NUnit, bạn phải sử dụng gói NuGet cho bộ điều hợp và nó phải là 3.8.0-alpha1 hoặc mới hơn.
Rob Prouse

2
Trong trường hợp của tôi, đó chỉ là sự hiện diện của một app.configtệp trong dự án thử nghiệm của tôi: stackoverflow.com/a/47497668/67824 .
Ohad Schneider

Câu trả lời:


189

Trong trường hợp của tôi, hóa ra tôi chỉ đơn giản là phải nâng cấp bộ điều hợp thử nghiệm và khung thử nghiệm. Làm xong.

Ví dụ sử dụng Trình quản lý gói NuGet:

nhập mô tả hình ảnh ở đây


4
Điều này cũng giúp tôi! Lưu ý rằng bạn có thể "Quản lý các gói Nuget" ở cấp độ giải pháp và thực hiện việc này cho tất cả các dự án khi điều này là bắt buộc. Sau đó, bạn có thể gặp lỗi "tham chiếu mơ hồ" - đối với những lỗi này, chỉ cần xóa DLL cũ (Microsoft.VisualStudio.QualityTools.UnitTestFramework) khỏi tài liệu tham khảo
Prashanth Subramanian

48
Những thứ này phải là phần mở rộng của Visual Studio, không phải gói NuGet.
Jaider

1
Chúng tôi có rất nhiều dự án MSTest cũ và tôi không biết nó đã chuyển sang gói NuGet. Điều này cũng đã giải quyết nó cho tôi, ban đầu nghĩ rằng đó là một lỗi với các bản phát hành mới hơn của ReSharper cho đến khi tôi nhận ra VS Test Explorer cũng không thể khám phá các thử nghiệm của tôi.
David Anderson

1
Tôi đã làm chính xác như câu trả lời này. Trong giải pháp VS2017 của tôi, tôi đã thêm một dự án MSTest, thêm một vài thử nghiệm, nhưng việc xây dựng giải pháp sẽ dẫn đến: Khám phá thử nghiệm kết thúc: 0 tìm thấy. Vì vậy, đối với dự án thử nghiệm, trong Trình quản lý gói NuGet (bạn cũng có thể thực hiện ở cấp độ giải pháp), tôi đã cập nhật MSTest.TestAd CHƯƠNG và MSTest.TestFramework cả từ v1.1.18 đến v1.2.0. Sau đó, sau khi thực hiện quá trình xây dựng, các thử nghiệm của tôi hiện xuất hiện trong Test Explorer.
Kershaw

1
Làm việc rất tốt cho tôi Tôi đã phải đi vào trình quản lý gói nuget trong VS2017 cho dự án thử nghiệm cụ thể và chỉ cần cập nhật các gói khác nhau mà tôi có như nunit, sau đó xây dựng> xây dựng lại và tất cả đều ổn.
Tahir Khalid

126

Điều này chỉ làm việc cho tôi (không biết liệu đó có phải là kết quả của việc thay đổi không gian làm việc làm hỏng thứ gì đó không):

Xóa các tệp bộ đệm thử nghiệm VS trong% TEMP% \ VisualStudioTestExplorerExtensions và khởi động lại VS2017.


4
Điều này làm việc một lần, không phải sau đó. Điều gì (lần này) đã sửa nó cho tôi là xóa thư mục TestResults và bin / obj (cùng với việc dọn dẹp thư mục tạm thời này)
icesar

24
Bất cứ ai tự hỏi ở đâu %TEMP%- mang theo cửa sổ lệnh và gõecho %TEMP%
mike123

21
Thư mục không tồn tại trong temp: /
Douglas Gaskell

Vậy đâu là nguyên nhân của hành vi đó?
Mykhailo Seniutovych

1
Cách dễ nhất để truy cập% TEMP% là giành chiến thắng + R và nhập% TEMP%
PontiusTheBarbarian

58

API cho các bộ điều hợp thử nghiệm cho .NET Core đã thay đổi khi phát hành Visual Studio 2017 và chuyển từ project.jsonđịnh dạng sang csprojđịnh dạng. Điều này làm cho các dotnet-test-*bộ điều hợp hiện có như dotnet-test-nunitlỗi thời.

Các bộ điều hợp đã được cập nhật, nhưng cách bạn thiết lập và chạy thử nghiệm trong Visual Studio hoặc trên dòng lệnh dotnet testyêu cầu các tham chiếu khác nhau trong các dự án thử nghiệm của bạn. Cẩn thận với bất kỳ tài liệu nào bạn thấy rằng các gói tham chiếu ở dotnet-test-*định dạng vì chúng đã lỗi thời.

Đầu tiên, dự án thử nghiệm của bạn phải nhắm mục tiêu một nền tảng cụ thể, hoặc .NET Core hoặc .NET Framework. Nó không thể nhắm mục tiêu .NET Standard ngay cả khi mã bạn đang kiểm tra là .NET Standard. Điều này là do mục tiêu của các thử nghiệm cho biết nền tảng nào sẽ chạy thử nghiệm theo. .NET Standard giống như một PCL (Thư viện lớp di động) ở chỗ nó có thể chạy trên nhiều nền tảng.

Tiếp theo, bạn cần thêm tài liệu tham khảo Microsoft.NET.Test.Sdk, khung lựa chọn thử nghiệm của bạn và bộ điều hợp thử nghiệm tương thích. Đối với NUnit, tài liệu tham khảo của bạn sẽ trông như thế này,

<itemgroup>
    <packagereference Include="Microsoft.NET.Test.Sdk" Version="15.0.0"></packagereference>
    <packagereference Include="NUnit" Version="3.7.1"></packagereference>
    <packagereference Include="NUnit3TestAdapter" Version="3.8.0"></packagereference>
</itemgroup>

Một bình luận ở trên đề cập thêm,

<ItemGroup>
    <Service Include="{82a7f48d-3b50-4b1e-b82e-3ada8210c358}" />
</ItemGroup>

Điều này không bắt buộc, nhưng có thể giúp. Nó được tự động thêm vào tất cả các dự án thử nghiệm đơn vị bởi Visual Studio để giúp nó nhanh chóng tìm thấy các dự án có thử nghiệm.

Nếu các thử nghiệm của bạn không xuất hiện trong Visual Studio, điều đầu tiên cần thử là đóng giải pháp của bạn và sau đó mở lại chúng. Dường như có lỗi trong Visual Studio không phát hiện ra các thay đổi đối với các dự án khi bạn chỉnh sửa chúng.

Để biết thêm thông tin, hãy xem Kiểm tra .NET Core với NUnit trong Visual Studio 2017


2
Nhắm mục tiêu .NET Framework chứ không phải .NET Standard làm việc cho tôi. Cảm ơn.
Ben Griswold

7
Đó là tài liệu tham khảo Microsoft.NET.Test.SDK bị thiếu trong dự án của tôi và không có dấu hiệu cho thấy bất cứ thứ gì dựa vào nó để hiển thị. Đã thêm nó thông qua bảng điều khiển nuget và mọi thứ bắt đầu hoạt động. Cảm ơn danh sách tham khảo!
GWhite

Tôi đã phải sao chép thư mục này từ đồng nghiệp vào thư mục tạm thời của mình và khởi động lại VS:% TEMP% \ VisualStudioTestExplorerExtensions \ MSTest.TestAd CHƯƠNG.1.1.18
Heiner

Làm cách nào tôi có thể kiểm tra dự án netst Chuẩn 2.0 nếu tôi thay đổi Khung mục tiêu? Tôi không thể biên dịch nữa vì một netstandard2.0 dự án không thể được tham chiếu bởi một dự án mà tagets net46
Jerome2606

1
Điều này làm việc cho tôi. Cảm ơn các giải pháp chi tiết.
Talha Ashfaque

42

Tôi đã có cùng một vấn đề và làm cho nó hoạt động bằng cách làm như sau ..:

  • Trước tiên hãy đóng tất cả các phiên bản Visual Studio đang mở và xóa thư mục này:% TEMP% \ VisualStudioTestExplorerExtensions. ( Chạy thử nghiệm với Visual Studio )
  • Chuyển đến trình quản lý gói Nuget của bạn và cài đặt Microsoft.NET.Test.Sdk (15.3.0-preview-20170425-07) trước rồi cài đặt xunit.runner.visualstudio (2.3.0-beta1-build1309). Xem ảnh chụp màn hình Nuget đính kèm để xem tất cả các gói tôi phải cài đặt để có bản VS 2017 mới nhất để phát hiện các thử nghiệm của tôi.Ảnh chụp màn hình Nuget

35
Xóa % Temp% \ VisualStudioTestExplorerExtensions là đủ cho tôi.
Juan Pablo Gomez

Yeap. Chỉ cần xóa nó và khởi động lại VS đã sửa nó.
Juan Carlos

Có ai biết những gì gây ra điều này ở nơi đầu tiên? Tôi đã có nó xảy ra hai lần với tôi bây giờ, nhưng xóa thư mục đó và khởi động lại VS đã hoạt động. Nó thật kỳ lạ.
RubyHaus

@PmanAce - Tôi đã làm, thực sự. Tôi đang sử dụng hai phiên bản TFS khác nhau (một cho mỗi dự án), vì vậy không gian làm việc sẽ tự động thay đổi khi tôi chuyển đổi dự án.
RubyHaus

xóa thư mục và thêm nuget Microsoft.NET.Test.Sdkdường như hoạt động với tôi .. cảm ơn bạn StackOverflow. (Giải pháp .NET Framework WebApi 2)
bkwdesign

40

Quên làm cho lớp kiểm tra công khai ngăn chặn các phương thức kiểm tra bên trong được phát hiện

Tôi đã có một dự án xUnit mặc định và đã xóa UnitTest1.cs mẫu, thay thế nó bằng một lớp kiểm tra bộ điều khiển, với một vài thử nghiệm, nhưng không tìm thấy

Câu chuyện dài, sau khi cập nhật các gói xUnit, Test.Sdk, xUnit.runner và xây dựng lại dự án tôi gặp phải lỗi xây dựng:

Lỗi xUnit1000 Các lớp kiểm tra phải được công khai

Rất may, phiên bản cập nhật đã ném ngoại lệ này để tránh cho tôi một số rắc rối

Sửa đổi lớp kiểm tra thành công khai đã khắc phục sự cố của tôi


6
không chắc tại sao lại bỏ phiếu, nhưng trước khi cà phê buổi sáng của tôi 100% thì điều này đã bị tôi bỏ qua.
Andrei

1
Đã thử tất cả các câu trả lời khác cho câu hỏi / vấn đề này và đây là câu trả lời cuối cùng!
FastTrack

3
Đó là một điều vô cùng xấu hổ nhưng .. bất cứ điều gì. Điều thú vị là nếu bạn tạo một trường hợp bộ thử nghiệm trong VS2017 thì nó sẽ không tạo ra publiclớp, mà chỉ là lớp, vì vậy nó sẽ không khám phá ra nó cho đến khi bạn thêm publicđịnh danh.
briosheje

tất nhiên. xấu của tôi - mstest nên có tính năng này.
Crismogram

10

Trong trường hợp của tôi, tôi nhắm mục tiêu dự án thử nghiệm vào x64Kiến trúc và cài đặt thử nghiệm Kiến trúc (test-> Kiến trúc bộ xử lý mặc định) đã thay đổi được đặt thành x86. Họ không hợp nhau.

Sau khi thiết lập lại cài đặt kiểm tra Kiến trúc x64và xây dựng lại tất cả các kiểm tra đã được phát hiện lại.


trong vs2017 cài đặt trong menu Kiểm tra -> Cài đặt kiểm tra -> Kiến trúc bộ xử lý mặc định
IcyBrk

8

Tôi đã gặp rắc rối với VS 2017 khi tìm thấy UnitTest của mình. Đó không phải là vấn đề chính xác mà John đã hỏi - nhưng đây là kết quả đầu tiên trong google mà tôi tìm kiếm nên tôi muốn chia sẻ vấn đề của mình.

Tôi đã có một giải pháp kế thừa từ VS2010 trở lại qua VS2013, VS2015. Bây giờ trong VS2017, dường như các không gian tên cho [TestMethod]Thuộc tính đã thay đổi.

Trước khi nó được sử dụng

Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=10.0.0.0

Tôi đã tạo một Test.dll mới trong dự án và một cái được sử dụng theo mặc định

Microsoft.VisualStudio.TestPlatform.TestFramework, Version=14.0.0.0

Vì vậy, giải pháp của tôi là tạo ra một dự án UnitTest mới từ bên trong VS2017. Có lẽ thay đổi tham chiếu lắp ráp cho dự án thử nghiệm cũ cũng sẽ làm việc. Với tài liệu tham khảo mới, VS2017 đã khám phá những bài kiểm tra đơn vị đó.


Đáng buồn thay, ngay cả một dự án thử nghiệm đơn vị mới cũng không có thử nghiệm hiển thị cho tôi: /
Douglas Gaskell

7

Đừng đọc các bài báo lỗi thời trong MSDN. Các tài liệu liên quan đến .NET Core nằm dưới docs.microsoft.com

https://docs.microsoft.com/en-us/dotnet/articles/core/testing/

Nói chung, bạn cần một ứng dụng bảng điều khiển .NET Core để chứa các trường hợp kiểm tra đơn vị.


Cảm ơn nhiều, Lex. Nếu bài viết này là chính xác, cách duy nhất để kiểm tra .NET Core là từ dòng lệnh - do đó mất tất cả sự tích hợp VS mà chúng tôi có với việc chạy thử nghiệm trong VS 2015. Tôi có đúng trong trường hợp này không?
John Pezzanite 17/03/2017

Bạn có sử dụng xUnit.net hoặc MSTest không?
Lex Li

@JohnPezzanite bạn phải thể hiện nhiều hơn những gì bạn đã làm (có thể là một repo GitHub nếu có thể). Tôi có các dự án tại GitHub hoạt động hoàn hảo, và nhiều dự án khác cũng vậy.
Lex Li

Thực hiện theo ví dụ trong dòng tôi cung cấp. Tôi đã thử nó với chuẩn .NET và .NET Core, với các bài kiểm tra đơn vị của Microsoft như trong ví dụ và với xUnit. Tiêu chuẩn .NET tích hợp với VS 2017 trong khi .NET Core sẽ chỉ chạy từ dòng lệnh. Nhưng tôi đang nhắc lại những gì tôi đã nêu ở trên. Có vẻ như Microsoft đã xóa tất cả mẫu tích hợp thử nghiệm đơn vị .NET Core VS 2017.
John Pezzanite 18/03/2017

@JohnPezzanite kiểm tra GitHub.com/lextm/sharpsnmplib và giải pháp NetSt Chuẩn của nó.
Lex Li

6

đối với tôi vấn đề là tôi đã đặt nhầm testcase vào một lớp bên trong

[TestClass]
  internal class TestLib {
}

điều đó đã gây ra những thử nghiệm không được xác định.


5

Hãy chắc chắn rằng bạn đang sử dụng đúng Microsoft.NET.Test.Sdk:

<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.0.0" />

Không sử dụng trước khi phát hành. Hoặc bạn phải đổi sang ứng dụng console (không phải thư viện). Tôi có vấn đề tương tự, nhưng với bản phát hành mới nhất (15.0.0), nó bắt đầu hoạt động trở lại.

Ngoài ra, bạn có thể phải thêm:

  <ItemGroup>
    <Service Include="{82a7f48d-3b50-4b1e-b82e-3ada8210c358}" />
  </ItemGroup>

nhưng tôi không nghĩ rằng nó là không cần thiết.


Tập tin này nằm ở đâu? Tôi có thể tìm thấy phần "Bao gồm dịch vụ" trong tệp dự án (* .csproj) của mình nhưng không phải là GóiReference.
Chris Bennet

@ChrisBennet trong tệp * test.csproj của bạn.
Evgeni Nabokov

1
@ evgeni-nabokov nói đúng. Tất cả những thay đổi này nằm trong tệp [project] .test.csproj. Nhấp chuột phải vào dự án trong giải pháp và chọn "Chỉnh sửa [dự án] .test.csproj" Xem ví dụ tại: github.com/RenetConsulting/angularcore.net/blob/master/Business/
trộm

5

Tôi biết rằng OP đã liệt kê danh sách này vào danh sách kiểm tra của mình, nhưng thật dễ dàng bỏ qua điểm đó trong khi cài đặt Visual Studio 2017 sạch sẽ và thiết lập dự án mới. Ngoài mẫu dự án NUnitNUnit Framework, người ta cần cài đặt riêng bộ điều hợp NUnit, ví dụ: sử dụng lệnh NuGet Install-Package NUnit3TestAdapter -Version 3.9.0. Sau đó, Visual Studio Community 2017 đã bắt đầu khám phá các bài kiểm tra đơn vị mà không có bất kỳ vấn đề nào.


1
Điều này đã giúp tôi!
YvesR

OMG, cái này đã làm điều đó cho tôi. Nếu tôi có thể nhúng bạn với tiền thưởng, tôi sẽ.
Tro

Đây là giải pháp duy nhất hiệu quả với tôi, cảm ơn!
Vadim Tofan

5

Trong trường hợp của tôi, Test Explorer không thể tìm thấy các thử nghiệm của tôi sau khi tôi chuyển dự án sang một giải pháp mới.

Câu trả lời đơn giản là tôi đã có một tài liệu tham khảo về Bộ kiểm tra MS Test cũ trong dự án của mình.

Tôi đã có một bản sao của dòng bên dưới cho phiên bản 1.1.11 của Bộ kiểm tra MS Test trong tệp cs.proj của mình:

<Import Project="..\packages\MSTest.TestAdapter.1.1.18\build\net45\MSTest.TestAdapter.props" Condition="Exists('..\packages\MSTest.TestAdapter.1.1.18\build\net45\MSTest.TestAdapter.props')" />

Để khắc phục sự cố,

  1. Nhấp chuột phải vào dự án và chọn 'Unload Project'.
  2. Nhấp chuột phải vào dự án và chọn 'Chỉnh sửa'
  3. Xóa dòng nhập phiên bản cũ của bộ chuyển đổi.
  4. Nhấp chuột phải vào dự án và chọn 'Tải lại dự án'.
  5. Xây dựng lại giải pháp / dự án

Có cùng một vấn đề. Loại bỏ và xây dựng lại giải pháp đã không làm việc. Đã khởi động lại VS và thử nghiệm đã được phát hiện!
Mike Ward

4

Chỉ có vấn đề này với phòng thu hình ảnh không thể tìm thấy các thử nghiệm của tôi, không thể thấy nút để chạy chúng ngoài phương pháp và chúng không được chọn bằng cách chạy tất cả các thử nghiệm trong dự án.

Hóa ra lớp kiểm tra của tôi không công khai! Công khai cho phép VS khám phá các bài kiểm tra.


2

Đối với tôi đã dễ dàng hơn để tạo một dự án thử nghiệm mới hoạt động hoàn toàn tốt với Visual Studio 2017 ... và chỉ cần sao chép các tệp thử nghiệm, thêm tài liệu tham khảo và các gói NuGet theo yêu cầu.

nhập mô tả hình ảnh ở đây


tạo dự án mới có lẽ tiết kiệm hàng giờ đau đầu!
M.kazem Akhÿ

2

Trong trường hợp của tôi, đó là một dự án tôi đã nâng cấp dự án thử nghiệm từ phiên bản .Net trước đó. trong app.config tôi đã lắp ráp các phiên bản trước của các hội đồng phụ thuộc.

Sau khi sửa các assembnlybindings trong app.config, các thử nghiệm của tôi đã được phát hiện.


2

Khám phá

Các câu trả lời hàng đầu ở trên không hoạt động với tôi (khởi động lại, cập nhật lên phiên bản 1.1.18 ... Tôi đã được cập nhật, xóa các tệp tạm thời, xóa bộ nhớ cache NuGet, v.v.).

Điều tôi khám phá ra là tôi có các tài liệu tham khảo khác nhau về MSTest.TestAd CHƯƠNGMSTest.Framework trong các dự án thử nghiệm khác nhau (giải pháp của tôi có hai). Một đã được chỉ ra 1.1,18 như ...

gói.config

<package id="MSTest.TestAdapter" version="1.1.18" targetFramework="net461" />
<package id="MSTest.TestFramework" version="1.1.18" targetFramework="net461" />

... nhưng một cái khác có các tham chiếu đến 1.1.11. Một số câu trả lời ở trên dẫn đến khám phá này khi hai phiên bản của các thư viện xuất hiện trong thư mục tạm thời của tôi (% TEMP% \ VisualStudioTestExplorerExtensions \) sau khi khởi động lại Visual Studio.

Giải pháp

Chỉ cần cập nhật các gói của tôi.config lên phiên bản 1.1.18 là những gì đã khôi phục chức năng kiểm tra đơn vị của tôi trong VS. Dường như có một số lỗi không cho phép các tài liệu tham khảo song song của các thư viện MSTest. Hy vọng điều này sẽ giúp bạn.

Thêm thông tin:

  • Visual Studio 2017 Ent: 15.5.6 (Tôi đã cập nhật từ 15.0.1 với hy vọng sẽ khắc phục vấn đề này, nhưng tôi đã có nó trong cả hai)

2

Giải pháp đã loại bỏ app.configtập tin của tôi từ dự án thử nghiệm đơn vị của tôi. Các bài kiểm tra sẽ xuất hiện lại!

Tập tin này đã tham chiếu một số dll trong các ràng buộc không thực sự có trong tài liệu tham khảo dự án. Thêm lại các cụm lắp ráp rất cần thiết cho dự án của bạn.


1

Trong trường hợp của tôi, đó là dự án UWP có mặt trong giải pháp gây ra vấn đề.

Khi tôi dỡ dự án UWP, các thử nghiệm đã được phát hiện. Khi tôi tải nó trở lại, kiểm tra biến mất một lần nữa.

Cố gắng dỡ tất cả các dự án và chỉ giữ dự án thử nghiệm. Mười giải pháp xây dựng lại và thử nghiệm shound xuất hiện trong Test Runner. Tải từng dự án một và xây dựng lại giải pháp mỗi lần để tìm ra dự án nào gây ra sự cố

repo mẫu

Báo cáo lỗi VS


Đánh giá cao phản hồi nhưng đây không phải là vấn đề của tôi. Nếu bạn nhìn vào ví dụ repo mà tôi liên kết đến trong câu hỏi của tôi, chỉ có một dự án duy nhất trong giải pháp. Không có dự án khác để loại bỏ. Giải pháp đó là một thử nghiệm mặc dù vậy tôi đã thử những gì bạn nói khi dỡ các dự án lên giải pháp thực tế của tôi nhưng nó không hoạt động.
rayepps

1

Vấn đề

Vấn đề là Visual Studio đang bị 'nhầm lẫn' so với các phiên bản lõi dotnet trên máy. Khi tôi đi đến bảng điều khiển -> gỡ cài đặt chương trình, tôi đã cài đặt 8 Runtimes SDK lõi và Runtimes khác nhau. Điều này bằng cách nào đó khiến VS âm thầm có lỗi khi cố gắng tìm các bài kiểm tra.

Xác thực vấn đề

Bạn có thể xác nhận sự cố bằng cách đi tới dòng lệnh và nhận phiên bản dotnet của bạn $ dotnet --version. Nếu bạn thấy bất cứ điều gì ngoại trừ phiên bản mới nhất bạn đã cài đặt thì máy của bạn có một số điểm không phù hợp và không sử dụng đúng phiên bản. Ví dụ ... Nếu bạn đã 1.0.1cài đặt lõi dotnet nhưng khi bạn nhận được phiên bản tại dấu nhắc lệnh và nó báo đó 1.0.0là một vấn đề.

Giải pháp

Xóa tất cả những thứ cũ. Tôi đã bắt đầu chỉ với những gì tôi cần phải loại bỏ (phiên bản RC dotnet cũ nhất) nhưng nó vẫn đưa ra phiên bản sai khi kiểm tra vấn đề. Cuối cùng, tôi thừa nhận để làm sạch hoàn toàn. TÔI...

  • Gỡ cài đặt tất cả các ứng dụng phòng thu trực quan (trên máy của tôi VS2015 và VS2017)
  • Gỡ cài đặt tất cả các phiên bản lõi dotnet (thậm chí gần đây nhất)

Sau khi máy của tôi hoàn toàn trống rỗng tất cả các VS và donet, tôi chỉ cài đặt VS2017 (nó được đóng gói với dotnet mới nhất). Tôi đã tạo một dự án thử nghiệm xUnit và nhà thám hiểm thử nghiệm đã tìm thấy thử nghiệm ngay lập tức GIẢI QUYẾT

Điều này có vẻ như quá mức cần thiết nhưng tôi đã mất hai tuần để cố gắng khắc phục điều này theo những cách khác. Nếu bạn gặp sự cố chỉ cần làm điều đó, mặc dù có thể bạn phải mất hàng giờ để gỡ cài đặt / cài đặt lại các mục, nó có thể sẽ giúp bạn tiết kiệm thời gian.

Người giới thiệu

  • Xem bài đăng trên blog @epests nơi anh ấy cung cấp thêm chi tiết về cách khắc phục sự cố.

1

Tôi đã thử mọi cách nhưng không có gì giúp được. Trong trường hợp của tôi, tôi đã có một giải pháp với một số dự án thử nghiệm và một số trong số chúng đang sử dụng khung thử nghiệm ms cũ để Visual Studio chỉ tìm thấy những dự án đó.

Tôi đã cài đặt các gói khung thử nghiệm cho tất cả các dự án thử nghiệm như trong câu trả lời được chấp nhận . Sau đó xóa các tham chiếu đến các công cụ chất lượng cũ, khởi động lại Visual Studio và bây giờ tôi có thể xem tất cả các thử nghiệm.


1

Đối với C ++:

Vì không có câu hỏi đặc biệt nào cho các bài kiểm tra C ++, nhưng chủ đề rất giống nhau, đây là điều giúp tôi khi tôi gặp rắc rối với khám phá thử nghiệm.

Nếu bạn chỉ cài đặt phát triển Desktop với C ++ , thì giải pháp là cũng cài đặt phát triển Universal Windows Platform với các công cụ C ++ Universal Windows Platform tùy chọn . Bạn có thể chọn những thứ này trong trình cài đặt web studio trực quan.

Sau đó, xây dựng lại dự án thử nghiệm của bạn và khám phá thử nghiệm sẽ hoạt động.

Btw, tôi đã tạo dự án thử nghiệm đơn vị trong VS2017. Điều này có thể quan trọng, bởi vì một số người dùng đã đề cập rằng họ có vấn đề phát hiện trong các dự án, đã được di chuyển từ VS2015 sang VS2017.


1

Loại bỏ dll cũ sẽ giúp. Xóa các tệp tạm thời nằm trong thư mục% TEMP% tại C: \ Users (tên người dùng của bạn) \ AppData \ Local \ Temp


1

Tôi gặp vấn đề tương tự. Giải pháp của tôi là ổn nhưng đột nhiên khi tôi mở giải pháp tôi phát hiện ra các xét nghiệm đã biến mất.

Cuối cùng tôi đã hạ cấp Microsoft.VisualStudio.TestPlatform.TestFrameworkMicrosoft.VisualStudio.TestPlatform.TestFramework.Extensionscác gói thành phiên bản rất cũ (sử dụng trình quản lý NuGet) và các phương thức kiểm tra đã xuất hiện. Sau đó, tôi nâng cấp lên phiên bản mới nhất và vẫn còn đó.

Vì vậy, chỉ cần hạ cấp và nâng cấp gói.


1

Trong trường hợp của tôi không có sự giúp đỡ nào ở trên cho tôi. Nhưng, tôi hạ cấp NUNit3TestAd CHƯƠNG thành phiên bản 3.8.0, sau đó nâng cấp lên phiên bản mới nhất (3.10.0)


1

Đôi khi thay đổi không gian tên của các bài kiểm tra làm việc. Tôi đã có cấu trúc thư mục như sau:

A |___B | |___D |___C___E

Không gian tên phẳng như Tests. <Name> và chúng không hiển thị trong cửa sổ kiểm tra. Khi tôi thay đổi không gian tên thành cấu trúc của thư mục, tất cả các bài kiểm tra đã xuất hiện. Bây giờ tôi có thể trở lại bất kỳ cấu trúc không gian tên nào khác mà tôi muốn.

Đừng quên xây dựng dự án của bạn!


1

Trong trường hợp của .NET Framework, trong dự án thử nghiệm trước đây có các tham chiếu đến các DLL sau:

Microsoft.VisualStudio.TestPlatform.TestFramework
Microsoft.VisualStudio.TestPlatform.TestFramework.Extentions

Tôi đã xóa chúng và thêm tài liệu tham khảo vào:

Microsoft.VisualStudio.QualityTools.UnitTestFramework

Và sau đó tất cả các bài kiểm tra xuất hiện và bắt đầu hoạt động theo cùng một cách như trước đây.

Tôi đã thử hầu hết tất cả các đề xuất khác ở trên trước đây, nhưng chỉ cần tham khảo lại các DLL thử nghiệm đã hoạt động ổn. Tôi đã đăng câu trả lời này cho những người trong trường hợp của tôi.


1

Tôi đã phải đối mặt với cùng một vấn đề, trong trường hợp của tôi để giải quyết

  1. Tôi mở giao diện điều khiển windows (phím windows + cmd).
  2. Điều hướng đến thư mục nơi dự án được tạo.
  3. Thực hiện lệnh "dotnet test" về cơ bản nó giống như thử nghiệm mà studio hình ảnh thực hiện nhưng khi bạn chạy nó qua giao diện điều khiển, nó cho phép bạn nhìn thấy dấu vết hoàn chỉnh.
  4. Tôi nhận được thông báo lỗi này "Thuộc tính TestClass được xác định trên lớp không công khai MSTest.TestControll.BaseTest"
  5. Vì vậy, tôi đã đi đến trường hợp thử nghiệm và đánh dấu nó là công khai, xây dựng lại và các thử nghiệm của tôi đang được hiển thị chính xác

0

Lúc đầu, tôi đã thử sử dụng MSTest. Sau đó, tôi đổi nó thành Nunit test. Sau đó, tôi muốn trở lại MSTest. Tôi đã xóa tất cả các mã nUnit và tham chiếu nhưng Test Explorer không hiển thị các phương thức MSTest. Giải pháp: Tôi đã xóa tất cả các tham chiếu nuget mstest và cài đặt lại. Làm xong.


0

Đối với tôi, thay đổi TargetFramework trong .csprojtệp của dự án thử nghiệm từ

  <PropertyGroup>
    <TargetFramework>netcoreapp2.0</TargetFramework>
  </PropertyGroup>

đến

  <PropertyGroup>
    <TargetFramework>net46</TargetFramework>
  </PropertyGroup>

đã làm việc.


0

Trong trường hợp của tôi, vấn đề là loại dự án được đặt thành thư viện tĩnh (lib) và nó phải là một thư viện động (dll)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.