Tôi có thể sử dụng mstest.exe mà không cần cài đặt Visual Studio không?


108

Tôi muốn sử dụng mstest.exe để chạy thử nghiệm đơn vị của mình trên máy chủ bản dựng, nhưng tôi không muốn cài đặt Visual Studio trên máy chủ bản dựng. Tôi có thể chỉ cài đặt MSTest mà không cần Visual Studio không?


Bạn có thể cung cấp thêm một chút chi tiết. Phiên bản nào? Xây dựng máy chủ? vv
Richard Banks

Câu trả lời:


168

Có thể chạy mstest.exe mà không cần studio trực quan.
Tải xuống một trong các Tác nhân cho Visual Studio ISO bên dưới và cài đặt Tác nhân Kiểm tra trên máy chủ:

Visual Studio 2017 (không gian đĩa 127MB, ít hơn để tải xuống)
Visual Studio 2015 (thiết lập 128MB, yêu cầu dung lượng đĩa 2GB)
Visual Studio 2012 (224MB)
Visual Studio 2013 (287MB)
Visual Studio 2010 (515MB)

Điều này cài đặt mọi thứ cần thiết để chạy mstest.exe từ dòng lệnh và trọng lượng nhẹ hơn nhiều so với visual studio. ~ 500mb tải xuống và khoảng ~ 300mb để chỉ cài đặt đại lý kiểm tra nếu tôi nhớ không nhầm.

CẬP NHẬT

Đối với các phiên bản cũ hơn VS 2017, hãy xem tại đây:

https://www.visualstudio.com/vs/older-downloads/


MsTest.exe được đặt ở đâu sau khi cài đặt TestAgent và TestController?
Evgeny Levin

3
C: \ Program Files \ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ MSTest.exe
Foole

1
Có bất kỳ tác nhân nào cho Visual Studio 2008 không?
Tomas Kubes

3
Nhóm của tôi đã gặp sự cố sau khi cài đặt Visual Studio 2012 Test Agents. Chúng tôi nghĩ rằng nó đã sửa đổi một số giá trị sổ đăng ký và do đó tạo ra một mớ hỗn độn của Visual Studio 2010 trên cùng một máy. Hãy coi chừng.
stephen

1
Liên kết cho năm 2015 đã chết. Đại lý kiểm tra bây giờ có thể được tìm thấy qua visualstudio.com/downloads/?q=agents
Onots

18

Câu trả lời này liên quan cụ thể đến Visual Studio 2017 và câu trả lời là . Tuy nhiên, xin lưu ý rằng Microsoft (vẫn) không cung cấp bất kỳ loại API chính thức nào để định vị các tệp thực thi có liên quan ( MSBuild.exeMSTest.exe), vì vậy bạn gặp khó khăn khi đọc các khóa đăng ký và / hoặc thăm dò các thư mục khác nhau để tìm các tệp này . Mày đã được cảnh báo.

  • Nếu bạn chỉ cần xây dựng (các) dự án thử nghiệm đơn vị của mình, hãy cài đặt gói MSTest.TestFrameworkvào (các) dự án đó và xóa tham chiếu đến Microsoft.VisualStudio.QualityTools.UnitTestFrameworkkhỏi chúng. Bây giờ tất cả những gì bạn cần là cài đặt Công cụ xây dựng Visual Studio 2017 và gọi msbuild.exeđể thực hiện xây dựng.
  • Nếu bạn cũng cần chạy thử nghiệm của mình, mọi thứ trở nên phức tạp hơn:
    • Giải pháp đơn giản nhất là cài đặt VS2017 Community Edition (bao gồm cả msbuild và mstest) - nhưng tôi không chắc về tính hợp pháp của điều này và không phải là luật sư, vì vậy hãy cẩn thận!
    • Một giải pháp an toàn hơn về mặt pháp lý (và nhẹ hơn nhiều, về dung lượng đĩa) là cài đặt Visual Studio 2017 Test Agentsau đó Build Tools cho Visual Studio 2017 ( thứ tự chính xác là quan trọng 1 ); điều này sẽ cung cấp cho bạn MSTest.exevstest.console.exesau đó bạn có thể gọi đến. Xin lưu ý rằng thực sự tìm ra vị trí của các tệp thực thi này là một vấn đề khó khăn, vì chúng sẽ không tồn tại trong cùng một cấu trúc thư mục như MSBuild.exetrong Công cụ xây dựng.

Cuối cùng, và rất quan trọng: nếu bạn sử dụng MSTest.TestFrameworkvà vẫn cần có thể khám phá và chạy thử nghiệm từ bên trong Visual Studio IDE, bạn cũng sẽ cần MSTest.TestAdaptercài đặt trong (các) dự án thử nghiệm đơn vị của mình.

1: Trong khi VS2017 hỗ trợ cài đặt song song, nó sử dụng một khóa đăng ký duy nhất chỉ ghi lại cài đặt gần đây nhất. Do đó, nếu bạn cài đặt Test Agent lần cuối, khóa sẽ trỏ đến thư mục cài đặt của nó ... nhưng Test Agent không bao gồm MSBuild.exe, vì vậy bất kỳ mã nào dựa vào khóa đăng ký này để tìm ra đường dẫn của tệp thực thi đó, sẽ không thành công. Tại sao Microsoft không thể làm cho Test Agent trở thành một phần tùy chọn của Build Tools (để tất cả các EXE sống trong cùng một hệ thống phân cấp thư mục) là bất kỳ ai.


Đã cài đặt thông qua phương pháp Test Agent nhưng File extension specified '.webtest' is not a valid test extension.đối với tôi mstest.exe vẫn không thành công .
Gregory Suvalian

Bây giờ có vswhere - xem các câu hỏi khác, ví dụ: " Lập trình tìm thư mục cài đặt VS2017 " hoặc " Không tìm thấy MSBuild.exe, cmd.exe " sử dụng nó.
Wai Ha Lee

@WaiHaLee vswherecòn hơn không, nhưng bạn vẫn phải đặt giả thiết về vị trí của MSBuild so với thư mục cài đặt VS ... nếu (khi nào?) Microsoft quyết định di dời bất kỳ tệp thực thi nào, giả định đó không còn hợp lệ . Tại sao Microsoft không thể hoặc sẽ không tạo ra một cách có lập trình để dẫn đến đường dẫn đến MSBuild / MSTest / VSTest (trái ngược với VS install dir, điều mà không ai thực sự quan tâm) vẫn nằm ngoài tôi.
Ian Kemp

Yeah, nó là nó / nó không có trò chơi là khó chịu. Tôi chắc rằng họ có lý do của họ, nhưng ....
Wai Ha Lee

@Ian Kemp Per ở trên, tôi đã cài đặt đại lý kiểm tra và công cụ xây dựng nhưng tôi nhận được lỗi No test is available in C:\Users\..\Desktop\MyExeName.exe... . Tôi đã mở một câu hỏi trên SO . Nếu bạn có bất kỳ manh mối nào, tôi đánh giá cao sự giúp đỡ của bạn.
user1207289

4

Tôi nghĩ rằng bạn có thể có thể, nhưng nó chắc chắn không được hỗ trợ.

Tôi đã tìm thấy bài viết blog này được viết bởi một người tuyên bố có MSTest hoạt động mà không cần cài đặt Visual Studio.


Bất kỳ URL nào có từ Hacking thực sự đòi hỏi phải đặt câu hỏi về giá trị của nỗ lực nếu MS quyết định thay đổi cách triển khai, môi trường của bạn có thể biến động và những điều không mong muốn có thể xảy ra với mỗi bản cập nhật Windows (chúng tôi luôn cập nhật thường xuyên, phải không?).
Russell

Trong trường hợp này, có vẻ như không có khả năng bản cập nhật windows sẽ phá được hack. Nhưng phiên bản mstest mới hơn (ví dụ: trong phiên bản mới hơn hoặc gói dịch vụ của VS) có thể hoạt động khác.
Doc Brown

@Russell - Cá nhân tôi muốn có thêm giấy phép VS hoặc chỉ sử dụng NUnit thay thế.
Justin

Cảm ơn vì tất cả các câu trả lời, tôi sẽ chỉ nhận được thêm một giấy phép VS.
yang-qu

1
Là tác giả của Bài đăng trên Blog trên, tôi có thể chứng thực rằng nó hoạt động và rất khó có khả năng bị hỏng. Ít nhất là đối với VS2008. Tôi chưa xem cái này cho VS2010. Việc MST bị tích hợp quá sâu vào VS là một điểm yếu lớn của bộ thử nghiệm, nhưng tôi không nghĩ MS sẽ sửa nó, vì nó khuyến khích mọi người sử dụng Team System.
foxxtrot

4

@crocpulsar, bạn cần cài đặt Visual Studio trên máy chủ xây dựng của mình, nhưng bạn KHÔNG cần mua thêm giấy phép .

Chỉ có cách là quá nhiều phụ thuộc để xây dựng & MSTest hoạt động mà không cần cài đặt VS và chắc chắn là nó không được hỗ trợ.

Miễn là người bắt đầu xây dựng có giấy phép, bạn không cần giấy phép cho máy chủ xây dựng. Điều này đã xảy ra kể từ những ngày đen tối của năm 2005, và miễn là có phiên bản tương đương thì bạn vẫn ổn.

Nếu mọi người trong nhóm của bạn có Ultimate, thì bạn có thể tự do cài đặt nó trên máy chủ bản dựng; nhưng nếu một trong những thành viên trong nhóm của bạn có Premium, thì lý tưởng nhất là bạn nên cài đặt Premium trên máy chủ bản dựng. Điều này cũng cho phép nhiều bit khác như Bảo hiểm mã, Phân tích tác động thử nghiệm và Xác thực kiến ​​trúc trong số những người khác.


Để tham khảo, đây là một bài đăng của microsoft trên blog này.msdn.com/b/jeffbe/archive/2008/03/18/
Maslow

2

Tôi vừa nhận được điều này hoạt động trên các máy chủ của mình mà không cần cài đặt Visual Studio 2017 IDE. Yêu cầu của tôi là

  • Xây dựng dự án
  • Xây dựng các dự án thử nghiệm
  • Chạy thử nghiệm bằng VSTest (Tôi tin rằng đó là một quy trình tương tự cho MSTest)

Tôi đã phải thực hiện sự kết hợp của một số điều được nêu trong các câu trả lời khác và sau đó là một câu trả lời khác ở đây .

VS2017:

  1. BuildTools - Bạn có thể tìm thấy phần này trên trang tải xuống của Microsoft , sau đó cuộn xuống "Công cụ cho Visual Studio 2017" -> "Công cụ xây dựng cho Visual Studio 2017"
  2. TestAgent - Bạn có thể tìm thấy phần này trên trang tải xuống của Microsoft , sau đó cuộn xuống "Công cụ cho Visual Studio 2017" -> "Đại lý cho Visual Studio 2017"
  3. Gói Nuget bao gồm dll thử nghiệm đơn vị studio trực quan - Bạn có thể tìm thấy điều này tại đây

Bước 3 là khắc phục sự cố sau:

"Không thể giải quyết tham chiếu này. Không thể định vị hội đồng" Microsoft.VisualStudio.QualityTools.UnitTestFramework ""

Sau đó gây ra:

"error CS0234: Loại hoặc tên không gian tên 'VisualStudio' không tồn tại trong không gian tên 'Microsoft' (bạn có thiếu tham chiếu lắp ráp không?)"

Tôi không phải thêm bất kỳ tài liệu tham khảo nào vào dự án. Tuy nhiên, đường dẫn đến vstest.console.exe được chứa trong thư mục TestAgent (đối với tôi đó là "C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ TestAgent \ Common7 \ IDE \ CommonExtensions \ Microsoft \ TestWindow" )


1

Dưới đây là các bước tôi đã thực hiện để máy chủ xây dựng của mình chạy MsTest mà không cần cài đặt VS 2012:

  1. Đã tạo thư mục thư mục 'Mstest' trong c: \ dev.
  2. Đã sao chép 'Mstest.exe' và 'Mstest.exe.config' từ C: \ Program Files (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ IDE vào thư mục 'Mstest'
  3. Sao chép Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll vào thư mục 'Mstest'
  4. Đã tạo thư mục 'assembly' trong thư mục 'Mstest'
  5. Đã giải nén tất cả v11 Microsoft.VisualStudio.QualityTools. *. Dlls từ C: \ Windows \ assembly vào thư mục 'Mstest / Assembly'
  6. Sao chép tất cả 'v11' Microsoft.VisualStudio.QualityTools. .dlls và Microsoft.VisualStudio.TestTools. .dlls từ C: \ Windows \ Microsoft.NET \ assembly \ GAC_MSIL thành 'Mstest / assembly'
  7. Sao chép tất cả v11 Microsoft.VisualStudio.QualityTools. .dlls và Microsoft.VisualStudio.TestTools. .dll từ C: \ Program Files (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ PrivateAssemblies đến 'Mstest / assembly'
  8. Thêm 'assembly' vào thuộc tính 'privatePath' của trong 'Mstest.exe.config'
  9. Xuất 'HKEY_LOCAL_MACHINE / SOFTWARE / Wow6432Node / Microsoft / VisualStudio / 11.0 / Enterprise / QualityTools và áp dụng nó vào hộp hudson.
  10. Sao chép QTAgent32.exe và QTAgent32.exe.config vào thư mục 'MsTest' từ C: \ Program Files (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ IDE
  11. Thêm 'assembly' vào thuộc tính 'privatePath' của trong 'QTAgent32.exe.config'
  12. Sao chép 'msdia110.dll' từ 'C: \ Program Files (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ Packages \ Debugger' sang 'MsTest / assembly'
  13. Đăng ký 'msdia110.dll' bằng c: /windows/syswow64/regsvr32.exe / i '../mstest/assemblies/msdia110.dll'(Điều này đã xảy ra lỗi, nhưng vì một số lý do mà nó vẫn hoạt động. Tôi đã chạy nó một vài lần và đã thử các phiên bản regsvr32.exe khác nhau trước khi tôi kiểm tra, nhưng nó ở đó trong sổ đăng ký)

  14. Thêm biến môi trường 'MSTEST_HOME' và đặt nó thành 'c: \ dev \ mstest \' hoặc thành đường dẫn của bạn. Tôi đã sử dụng biến môi trường trong tập lệnh xây dựng của mình.

Gỡ lỗi thực thi MsTest:

Thêm vào 'MsTest.exe.config'

<system.diagnostics> 
  <trace autoflush="true" indentsize="4"> 
    <listeners> 
      <add name="EqtListener" type="System.Diagnostics.TextWriterTraceListener" initializeData="C:\MsTest.log" /> 
    </listeners> 
  </trace> 
  <switches> 
    <add name="EqtTraceLevel" value="Verbose" /> 
  </switches> 
</system.diagnostics>

0

Nếu bạn cần chạy công cụ webtest mstest.exe thì bạn có thể cài đặt bản dùng thử Visual Studio Enterprise và đảm bảo chạy nó ít nhất một lần (chỉ cần khởi động nó) trong tài khoản mà bài kiểm tra sẽ chạy mà không cần thực hiện thêm gì. Vì vậy, nếu thử nghiệm của bạn chạy trong Tài khoản hệ thống thì bạn cần sử dụng một số thứ như bên dưới

PS C:\agent> psexec -s cmd.exe
C:\Windows\system32>"C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\mstest.exe"
Microsoft (R) Test Execution Command Line Tool Version 15.0.27520.0
Copyright (c) Microsoft Corporation. All rights reserved.

Please specify tests to run, or specify the /publish switch to publish results.
For switch syntax, type "MSTest /help"

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.