ฉันสามารถใช้ mstest.exe โดยไม่ต้องติดตั้ง Visual Studio ได้หรือไม่


108

ฉันต้องการใช้ mstest.exe เพื่อเรียกใช้การทดสอบหน่วยของฉันบนเซิร์ฟเวอร์การสร้าง แต่ฉันไม่ต้องการติดตั้ง Visual Studio บนเซิร์ฟเวอร์การสร้าง ฉันสามารถติดตั้ง MSTest โดยไม่ใช้ Visual Studio ได้หรือไม่


คุณสามารถให้รายละเอียดเพิ่มเติมเล็กน้อย รุ่นอะไร? สร้างเซิร์ฟเวอร์? ฯลฯ
Richard Banks

คำตอบ:


168

เป็นไปได้ที่จะเรียกใช้ mstest.exe โดยไม่มี Visual Studio
ดาวน์โหลดหนึ่งใน Agents สำหรับ Visual Studio ISO ด้านล่างและติดตั้งTest Agentบนเซิร์ฟเวอร์:

Visual Studio 2017 (เนื้อที่ดิสก์ 127MB น้อยกว่าสำหรับการดาวน์โหลด)
Visual Studio 2015 (การตั้งค่า 128MB ต้องการพื้นที่ดิสก์ 2GB)
Visual Studio 2012 (224MB)
Visual Studio 2013 (287MB)
Visual Studio 2010 (515MB)

สิ่งนี้จะติดตั้งทุกสิ่งที่จำเป็นสำหรับการเรียกใช้ mstest.exe จากบรรทัดคำสั่งและมีน้ำหนักเบากว่า Visual Studio มาก ดาวน์โหลด ~ 500mb และประมาณ ~ 300mb เพื่อติดตั้งเฉพาะตัวแทนทดสอบถ้าฉันจำไม่ผิด

อัปเดต

สำหรับเวอร์ชันที่เก่ากว่า VS 2017 ดูที่นี่:

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


MsTest.exe อยู่ที่ไหนหลังจากติดตั้ง TestAgent และ TestController
Evgeny Levin

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

1
มีตัวแทนสำหรับ Visual Studio 2008 หรือไม่
Tomas Kubes

3
กลุ่มของฉันประสบปัญหาหลังจากติดตั้ง Visual Studio 2012 Test Agents เราคิดว่ามันแก้ไขค่ารีจิสทรีบางส่วนและทำให้ Visual Studio 2010 ยุ่งเหยิงที่อยู่ในเครื่องเดียวกัน ระวัง.
stephen

1
ลิงก์สำหรับปี 2015 หมดแล้ว สามารถพบตัวแทนทดสอบได้ทางvisualstudio.com/downloads/?q=agents
Onots

18

คำตอบนี้เกี่ยวข้องโดยเฉพาะเพื่อ Visual Studio 2017 และคำตอบคือใช่ โปรดทราบ แต่ที่ไมโครซอฟท์ (ยัง) ไม่ได้ให้การจัดเรียงของ API เป็นทางการใด ๆ สำหรับตำแหน่ง executables ที่เกี่ยวข้อง ( MSBuild.exeและMSTest.exe) ดังนั้นคุณจะติดอยู่รีจิสทรีคีย์การอ่านและ / หรือแหย่ไดเรกทอรีต่างๆเพื่อค้นหาไฟล์เหล่านี้ คุณได้รับการเตือนแล้ว

  • หากคุณต้องการสร้างโครงการทดสอบหน่วยของคุณเท่านั้นให้ติดตั้งแพ็กเกจMSTest.TestFrameworkลงในโครงการเหล่านั้นและลบการอ้างอิงMicrosoft.VisualStudio.QualityTools.UnitTestFrameworkออกจากโครงการ ตอนนี้สิ่งที่คุณต้องมีคือติดตั้งVisual Studio 2017 Build Toolsและเรียกใช้msbuild.exeเพื่อสร้าง
  • หากคุณจำเป็นต้องทำการทดสอบของคุณด้วยสิ่งต่างๆจะยุ่งยากกว่า:
    • วิธีแก้ปัญหาที่ง่ายที่สุดคือการติดตั้ง VS2017 Community Edition (ซึ่งมีทั้ง msbuild และ mstest) - แต่ฉันไม่แน่ใจในความถูกต้องตามกฎหมายของสิ่งนี้และฉันไม่ใช่ทนายความดังนั้นโปรดระวัง!
    • วิธีการแก้ปัญหาที่ปลอดภัยถูกต้องตามกฎหมาย (และไกลเบาในแง่ของพื้นที่ดิสก์) คือการติดตั้งVisual Studio 2017 ตัวแทนการทดสอบและแล้ว สร้างเครื่องมือสำหรับ Visual Studio 2017 ( ลำดับที่แน่นอนมีความสำคัญ1 ); สิ่งนี้จะให้คุณMSTest.exeและvstest.console.exeสิ่งที่คุณสามารถโทรหาได้ โปรดทราบว่าการค้นหาว่าไฟล์ปฏิบัติการเหล่านี้อยู่ที่ไหนเป็นความเจ็บปวดเพราะจะไม่มีอยู่ในโครงสร้างไดเร็กทอรีเดียวกับMSBuild.exeใน Build Tools

ประการสุดท้ายและที่สำคัญมาก: หากคุณใช้งานMSTest.TestFrameworkและยังคงต้องสามารถค้นพบและเรียกใช้การทดสอบจากภายใน Visual Studio IDE ได้คุณจะต้องMSTest.TestAdapterติดตั้งในโครงการทดสอบหน่วยของคุณด้วย

1: แม้ว่า VS2017 รองรับการติดตั้งแบบเคียงข้างกัน แต่จะใช้คีย์รีจิสทรีเดียวที่บันทึกเฉพาะการติดตั้งล่าสุดเท่านั้น ดังนั้นหากคุณติดตั้ง Test Agent เป็นครั้งสุดท้ายคีย์จะชี้ไปที่ไดเร็กทอรีการติดตั้ง ... แต่ Test Agent ไม่ได้รวมMSBuild.exeไว้ดังนั้นรหัสใด ๆ ที่อาศัยคีย์รีจิสทรีนี้เพื่อค้นหาเส้นทางของไฟล์ปฏิบัติการนั้นจะล้มเหลว เหตุใด Microsoft จึงไม่สามารถทำให้ Test Agent เป็นส่วนเสริมของ Build Tools ได้ (เพื่อให้ EXE ทั้งหมดอยู่ในลำดับชั้นของไดเร็กทอรีเดียวกัน) เป็นเรื่องที่ทุกคนเดาได้


ติดตั้งผ่านวิธี Test Agent แต่ mstest.exe ยังคงล้มเหลวFile extension specified '.webtest' is not a valid test extension.สำหรับฉัน
Gregory Suvalian

ขณะนี้มีvswhere - ดูคำถามอื่น ๆ เช่น " การค้นหาไดเร็กทอรีการติดตั้ง VS2017 โดยทางโปรแกรม " หรือ " ไม่พบ MSBuild.exe cmd.exe " ซึ่งใช้งานได้
Wai Ha Lee

@WaiHaLee vswhereดีกว่าไม่มีอะไรเลย แต่คุณยังต้องตั้งสมมติฐานว่า MSBuild ตั้งอยู่ที่ไหนเมื่อเทียบกับไดเร็กทอรีการติดตั้ง VS ... ถ้า (เมื่อไหร่) Microsoft ตัดสินใจที่จะย้ายไฟล์ปฏิบัติการเหล่านั้นข้อสันนิษฐานนั้นจะไม่ถูกต้องอีกต่อไป . ทำไม Microsoft ไม่สามารถหรือไม่สร้างวิธีทางโปรแกรมเพื่อรับเส้นทางไปยัง MSBuild / MSTest / VSTest (ตรงข้ามกับ VS install dir ซึ่งไม่มีใครสนใจจริงๆ) ยังคงอยู่นอกเหนือจากฉัน
Ian Kemp

ใช่มันเป็นเกมที่น่ารำคาญหรือไม่ ฉันแน่ใจว่าพวกเขามีเหตุผล แต่ ....
ไวฮาลี

@Ian เคมพ์ต่อข้างต้นผมได้ติดตั้งทดสอบตัวแทนและสร้างเครื่องมือ No test is available in C:\Users\..\Desktop\MyExeName.exe... แต่ฉันได้รับข้อผิดพลาด ผมได้เปิดคำถามเกี่ยวกับ SO หากคุณมีเบาะแสเราขอขอบคุณสำหรับความช่วยเหลือ
user1207289

4

ฉันคิดว่าคุณอาจทำได้ แต่ไม่รองรับแน่นอน

ฉันพบบทความบล็อกนี้เขียนโดยผู้ที่อ้างว่า MSTest ทำงานโดยไม่ได้ติดตั้ง Visual Studio


URL ใด ๆ ที่มีคำว่า Hacking ต้องการการตั้งคำถามถึงคุณค่าของความพยายามหาก MS ตัดสินใจเปลี่ยนการใช้งานสภาพแวดล้อมของคุณอาจมีความผันผวนและสิ่งที่ไม่คาดคิดอาจเกิดขึ้นกับการอัปเดต Windows แต่ละครั้ง (เราทำการอัปเดตเป็นประจำใช่ไหม)
Russell

ในกรณีนี้ดูเหมือนว่าการอัปเดต windows จะทำลายการแฮ็กไม่ได้ แต่ mstest เวอร์ชันใหม่กว่า (ตัวอย่างเช่นภายในเวอร์ชันที่ใหม่กว่าหรือเซอร์วิสแพ็คของ VS) อาจทำงานแตกต่างกัน
Doc Brown

@Russell - โดยส่วนตัวแล้วฉันจะใช้ใบอนุญาต VS เพิ่มเติมหรือใช้ NUnit แทน
Justin

ขอบคุณสำหรับคำตอบทั้งหมดฉันจะได้รับใบอนุญาต VS เพิ่มเติม
yang-qu

1
ในฐานะผู้เขียนบล็อกโพสต์ข้างต้นฉันสามารถยืนยันได้ว่ามันใช้งานได้และไม่น่าจะพัง อย่างน้อยสำหรับ VS2008 ฉันไม่ได้ดูสิ่งนี้สำหรับ VS2010 MSTest ถูกรวมเข้ากับ VS เป็นจุดอ่อนอย่างมากของชุดทดสอบ แต่ฉันไม่คิดว่า MS จะแก้ไขได้เนื่องจากสนับสนุนให้ผู้คนใช้ Team System
foxxtrot

4

@crocpulsar คุณจะต้องติดตั้ง Visual Studio ในการสร้างเซิร์ฟเวอร์ของคุณแต่คุณไม่จำเป็นต้องซื้อใบอนุญาตเพิ่มเติม

มีการพึ่งพามากเกินไปในการทำให้ build & MSTest ทำงานได้โดยไม่ต้องติดตั้ง VS และไม่รองรับอย่างแน่นอนที่สุด

ตราบใดที่ผู้ที่เริ่มบิลด์มีใบอนุญาตคุณไม่จำเป็นต้องมีใบอนุญาตสำหรับบิลด์เซิร์ฟเวอร์ เป็นเช่นนี้มาตั้งแต่ยุคมืดของปี 2548 และตราบใดที่มีความเท่าเทียมกันของฉบับคุณก็โอเค

หากทุกคนในทีมของคุณมี Ultimate คุณก็มีอิสระที่จะติดตั้งบนเซิร์ฟเวอร์บิลด์ แต่ถ้าสมาชิกในทีมของคุณคนใดคนหนึ่งมี Premium คุณควรติดตั้ง Premium บนเซิร์ฟเวอร์ build นอกจากนี้ยังเปิดใช้งานบิตอื่น ๆ อีกมากมายเช่น Code Coverage, Test Impact Analysis และ Architecture Validation เป็นต้น


สำหรับการอ้างอิงนี่คือโพสต์จาก microsoft ในblogs.msdn.com/b/jeffbe/archive/2008/03/18/…
Maslow

2

ฉันเพิ่งทำให้สิ่งนี้ทำงานบนเซิร์ฟเวอร์ของฉันโดยไม่ต้องติดตั้ง Visual Studio 2017 IDE ความต้องการของฉันคือ

  • สร้างโครงการ
  • สร้างโครงการทดสอบ
  • เรียกใช้การทดสอบโดยใช้ VSTest (ฉันเชื่อว่าเป็นกระบวนการที่คล้ายกันสำหรับ MSTest)

ผมต้องทำรวมกันของบางสิ่งที่ระบุไว้ในคำตอบอื่น ๆ แล้วยังมีอีกหนึ่งที่นี่

VS2017:

  1. BuildTools - สามารถพบได้ในหน้าดาวน์โหลดของ Microsoftจากนั้นเลื่อนลงไปที่ "Tools for Visual Studio 2017" -> "Build Tools for Visual Studio 2017"
  2. TestAgent - สามารถพบได้ในหน้าดาวน์โหลดของ Microsoftจากนั้นเลื่อนลงไปที่ "Tools for Visual Studio 2017" -> "Agents for Visual Studio 2017"
  3. Nuget Packageรวม dll การทดสอบหน่วย Visual Studio - สามารถพบได้ที่นี่

ขั้นตอนที่ 3 คือการแก้ไขปัญหาต่อไปนี้:

"ไม่สามารถแก้ไขข้อมูลอ้างอิงนี้ไม่พบแอสเซมบลี" Microsoft.VisualStudio.QualityTools.UnitTestFramework ""

ซึ่งทำให้เกิด:

"error CS0234: ประเภทหรือชื่อเนมสเปซ" VisualStudio "ไม่มีอยู่ในเนมสเปซ" Microsoft "(คุณไม่มีการอ้างอิงแอสเซมบลีหรือไม่)"

ฉันไม่ต้องเพิ่มการอ้างอิงใด ๆ ในโครงการ อย่างไรก็ตามเส้นทางไปยัง vstest.console.exe มีอยู่ในโฟลเดอร์ TestAgent (สำหรับฉันมันคือ "C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ TestAgent \ Common7 \ IDE \ CommonExtensions \ Microsoft \ TestWindow" )


1

นี่คือขั้นตอนที่ฉันทำเพื่อให้บิลด์เซิร์ฟเวอร์เรียกใช้ MsTest โดยไม่ต้องติดตั้ง VS 2012

  1. สร้างโฟลเดอร์ไดเรกทอรี 'Mstest' ใน c: \ dev
  2. คัดลอก 'Mstest.exe' และ 'Mstest.exe.config' จาก C: \ Program Files (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ IDE ไปยังไดเร็กทอรี 'Mstest'
  3. คัดลอก Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll ไปยังไดเร็กทอรี 'Mstest'
  4. สร้างไดเร็กทอรี 'assemblies' ในโฟลเดอร์ 'Mstest'
  5. แยก v11 Microsoft.VisualStudio.QualityTools. *. dlls ทั้งหมดจาก C: \ Windows \ assembly ไปยังไดเร็กทอรี 'Mstest / assemblies'
  6. คัดลอก 'v11' Microsoft.VisualStudio.QualityTools ทั้งหมด .dlls และ Microsoft.VisualStudio.TestTools .dlls จาก C: \ Windows \ Microsoft.NET \ assembly \ GAC_MSIL ถึง 'Mstest / assemblies'
  7. คัดลอก v11 Microsoft.VisualStudio.QualityTools ทั้งหมด .dlls และ Microsoft.VisualStudio.TestTools .dll จาก C: \ Program Files (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ PrivateAssemblies เป็น 'Mstest / assemblies'
  8. เพิ่ม "แอสเซมบลี" ในแอตทริบิวต์ "privatePath" ของใน "Mstest.exe.config"
  9. ส่งออก 'HKEY_LOCAL_MACHINE / SOFTWARE / Wow6432Node / Microsoft / VisualStudio / 11.0 / Enterprise / QualityTools และนำไปใช้กับกล่องฮัดสัน
  10. คัดลอก QTAgent32.exe และ QTAgent32.exe.config ไปยังไดเร็กทอรี 'MsTest' จาก C: \ Program Files (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ IDE
  11. เพิ่ม "แอสเซมบลี" ในแอตทริบิวต์ "privatePath" ของใน "QTAgent32.exe.config"
  12. คัดลอก 'msdia110.dll' จาก 'C: \ Program Files (x86) \ Microsoft Visual Studio 11.0 \ Common7 \ Packages \ Debugger' ไปยัง 'MsTest / assemblies'
  13. ลงทะเบียน 'msdia110.dll' ด้วย c: /windows/syswow64/regsvr32.exe / i '../mstest/assemblies/msdia110.dll' (สิ่งนี้ทำให้เกิดข้อผิดพลาด แต่ด้วยเหตุผลบางประการก็ยังใช้งานได้ฉันรันมันสองสามครั้ง ครั้งและลอง regsvr32.exe เวอร์ชันต่างๆก่อนที่ฉันจะตรวจสอบ แต่มีอยู่ในรีจิสทรี)

  14. เพิ่มตัวแปรสภาพแวดล้อม 'MSTEST_HOME' และตั้งค่าเป็น 'c: \ dev \ mstest \' หรือไปยังเส้นทางของคุณ ฉันใช้ตัวแปรสภาพแวดล้อมในบิลด์สคริปต์ของฉัน

การดีบักข้อผิดพลาดในการดำเนินการ MsTest:

เพิ่มใน '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

หากคุณต้องการเรียกใช้เครื่องมือ webtest ของ mstest.exe คุณสามารถติดตั้ง Visual Studio Enterprise รุ่นทดลองใช้และตรวจสอบให้แน่ใจว่าได้รันอย่างน้อยหนึ่งครั้ง (เพียงแค่เริ่มต้น) ภายใต้บัญชีที่การทดสอบจะทำงานโดยไม่มีอะไรต้องทำเพิ่มเติม ดังนั้นหากการทดสอบของคุณทำงานภายใต้บัญชีระบบคุณต้องใช้สิ่งที่ต้องการด้านล่าง

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"

0

MSTest ประกาศสำหรับผู้ใช้. NET Core ประกาศมีตัวอย่างการใช้งานกับdotnetเครื่องมือ ฉันไม่คิดว่าตัวเองจะรับmstestไฟล์ปฏิบัติการแบบสแตนด์อโลนได้อย่างไร


ลิงก์เสีย :-(
เจมส์

1
@James เพิ่งแก้ไขลิงค์
user7610
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.