ฉันต้องการใช้ mstest.exe เพื่อเรียกใช้การทดสอบหน่วยของฉันบนเซิร์ฟเวอร์การสร้าง แต่ฉันไม่ต้องการติดตั้ง Visual Studio บนเซิร์ฟเวอร์การสร้าง ฉันสามารถติดตั้ง MSTest โดยไม่ใช้ Visual Studio ได้หรือไม่
ฉันต้องการใช้ mstest.exe เพื่อเรียกใช้การทดสอบหน่วยของฉันบนเซิร์ฟเวอร์การสร้าง แต่ฉันไม่ต้องการติดตั้ง Visual Studio บนเซิร์ฟเวอร์การสร้าง ฉันสามารถติดตั้ง MSTest โดยไม่ใช้ Visual Studio ได้หรือไม่
คำตอบ:
เป็นไปได้ที่จะเรียกใช้ 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 ดูที่นี่:
คำตอบนี้เกี่ยวข้องโดยเฉพาะเพื่อ Visual Studio 2017 และคำตอบคือใช่ โปรดทราบ แต่ที่ไมโครซอฟท์ (ยัง) ไม่ได้ให้การจัดเรียงของ API เป็นทางการใด ๆ สำหรับตำแหน่ง executables ที่เกี่ยวข้อง ( MSBuild.exe
และMSTest.exe
) ดังนั้นคุณจะติดอยู่รีจิสทรีคีย์การอ่านและ / หรือแหย่ไดเรกทอรีต่างๆเพื่อค้นหาไฟล์เหล่านี้ คุณได้รับการเตือนแล้ว
MSTest.TestFramework
ลงในโครงการเหล่านั้นและลบการอ้างอิงMicrosoft.VisualStudio.QualityTools.UnitTestFramework
ออกจากโครงการ ตอนนี้สิ่งที่คุณต้องมีคือติดตั้งVisual Studio 2017 Build Toolsและเรียกใช้msbuild.exe
เพื่อสร้าง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 ทั้งหมดอยู่ในลำดับชั้นของไดเร็กทอรีเดียวกัน) เป็นเรื่องที่ทุกคนเดาได้
File extension specified '.webtest' is not a valid test extension.
สำหรับฉัน
vswhere
ดีกว่าไม่มีอะไรเลย แต่คุณยังต้องตั้งสมมติฐานว่า MSBuild ตั้งอยู่ที่ไหนเมื่อเทียบกับไดเร็กทอรีการติดตั้ง VS ... ถ้า (เมื่อไหร่) Microsoft ตัดสินใจที่จะย้ายไฟล์ปฏิบัติการเหล่านั้นข้อสันนิษฐานนั้นจะไม่ถูกต้องอีกต่อไป . ทำไม Microsoft ไม่สามารถหรือไม่สร้างวิธีทางโปรแกรมเพื่อรับเส้นทางไปยัง MSBuild / MSTest / VSTest (ตรงข้ามกับ VS install dir ซึ่งไม่มีใครสนใจจริงๆ) ยังคงอยู่นอกเหนือจากฉัน
No test is available in C:\Users\..\Desktop\MyExeName.exe...
แต่ฉันได้รับข้อผิดพลาด ผมได้เปิดคำถามเกี่ยวกับ SO หากคุณมีเบาะแสเราขอขอบคุณสำหรับความช่วยเหลือ
ฉันคิดว่าคุณอาจทำได้ แต่ไม่รองรับแน่นอน
ฉันพบบทความบล็อกนี้เขียนโดยผู้ที่อ้างว่า MSTest ทำงานโดยไม่ได้ติดตั้ง Visual Studio
@crocpulsar คุณจะต้องติดตั้ง Visual Studio ในการสร้างเซิร์ฟเวอร์ของคุณแต่คุณไม่จำเป็นต้องซื้อใบอนุญาตเพิ่มเติม
มีการพึ่งพามากเกินไปในการทำให้ build & MSTest ทำงานได้โดยไม่ต้องติดตั้ง VS และไม่รองรับอย่างแน่นอนที่สุด
ตราบใดที่ผู้ที่เริ่มบิลด์มีใบอนุญาตคุณไม่จำเป็นต้องมีใบอนุญาตสำหรับบิลด์เซิร์ฟเวอร์ เป็นเช่นนี้มาตั้งแต่ยุคมืดของปี 2548 และตราบใดที่มีความเท่าเทียมกันของฉบับคุณก็โอเค
หากทุกคนในทีมของคุณมี Ultimate คุณก็มีอิสระที่จะติดตั้งบนเซิร์ฟเวอร์บิลด์ แต่ถ้าสมาชิกในทีมของคุณคนใดคนหนึ่งมี Premium คุณควรติดตั้ง Premium บนเซิร์ฟเวอร์ build นอกจากนี้ยังเปิดใช้งานบิตอื่น ๆ อีกมากมายเช่น Code Coverage, Test Impact Analysis และ Architecture Validation เป็นต้น
ฉันเพิ่งทำให้สิ่งนี้ทำงานบนเซิร์ฟเวอร์ของฉันโดยไม่ต้องติดตั้ง Visual Studio 2017 IDE ความต้องการของฉันคือ
ผมต้องทำรวมกันของบางสิ่งที่ระบุไว้ในคำตอบอื่น ๆ แล้วยังมีอีกหนึ่งที่นี่
VS2017:
ขั้นตอนที่ 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" )
นี่คือขั้นตอนที่ฉันทำเพื่อให้บิลด์เซิร์ฟเวอร์เรียกใช้ MsTest โดยไม่ต้องติดตั้ง VS 2012
ลงทะเบียน 'msdia110.dll' ด้วย c: /windows/syswow64/regsvr32.exe / i '../mstest/assemblies/msdia110.dll' (สิ่งนี้ทำให้เกิดข้อผิดพลาด แต่ด้วยเหตุผลบางประการก็ยังใช้งานได้ฉันรันมันสองสามครั้ง ครั้งและลอง regsvr32.exe เวอร์ชันต่างๆก่อนที่ฉันจะตรวจสอบ แต่มีอยู่ในรีจิสทรี)
เพิ่มตัวแปรสภาพแวดล้อม '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>
หากคุณต้องการเรียกใช้เครื่องมือ 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"
MSTest ประกาศสำหรับผู้ใช้. NET Core ประกาศมีตัวอย่างการใช้งานกับdotnet
เครื่องมือ ฉันไม่คิดว่าตัวเองจะรับmstest
ไฟล์ปฏิบัติการแบบสแตนด์อโลนได้อย่างไร