I am trying to automate running a C# solution's unit tests from a batch script.
My script is working fine, until it comes to actually calling MsTest.exe with the /testcontainer and /test flags in the MsTest call.
Batch script below:
@echo OFF
SETLOCAL ENABLEEXTENSIONS
SETLOCAL ENABLEDELAYEDEXPANSION
echo Detecting System specification...
echo.
reg Query "HKLM\Hardware\Description\System\CentralProcessor\0" | find /i "x86" > NUL && set OS=32BIT || set OS=64BIT
set programFilesPath=xyz
if %OS%==32BIT (
echo 32bit operating system detected.
echo.
set programFilesPath=%ProgramFiles%\Microsoft Visual Studio
) ELSE (
echo 64bit operating system detected.
echo.
set programFilesPath=%ProgramFiles(x86)%\Microsoft Visual Studio
)
echo Checking for Visual Studio installations...
echo.
set /a highestVSVersion=54
set /a installationPath=xyz
set /a vsCount=0
for /d %%a in ("%programFilesPath%"*) do (
rem echo "%%a"
rem set installationPath=%%a
rem echo !installationPath!
rem echo !vsCount!
for /f "tokens=5" %%g in ("%%a") do (
set tempStr=%%g
set tempStr=!tempStr:~0,2!
if not "!tempStr!"=="!tempStr:.=!" (
set tempStr=!tempStr:.=!
)
set tempTwo=0
set tempTwo=!tempStr!
if !vsCount! EQU 0 (
set highestVSVersion=!tempTwo!
) else (
if !tempTwo! GTR !highestVSVersion! (
set highestVSVersion=!tempTwo!
)
)
)
set /a vsCount=!vsCount!+1
)
if !vsCount! EQU 0 (
echo No Visual Studio installation found. Please install visual studio to run unit tests.
echo.
) else (
if !highestVSVersion! GTR 9 (
set highestVSVersion=!highestVSVersion!.0
)
echo Visual Studio !highestVSVersion! found.
echo.
echo Verifiying MsTest.exe location for Visual Studio !highestVSVersion!...
echo.
set fullPath=!programFilesPath! !highestVSVersion!\Common7\IDE\MsTest.exe
if exist !fullPath! (
echo MsTest.exe found at: !fullPath!
echo.
echo Running all tests in src\DictionaryDash.Testing
set testContainerArg=src\DictionaryDash.Testing\bin\Release\DictionaryDash.Testing.dll
call "!fullPath!" /testcontainer: !testContainerArg!
)
)
pause
Where I am having trouble is the last call line. I get the following output in the command window:
Detecting System specification...
32bit operating system detected.
Checking for Visual Studio installations...
Visual Studio 12.0 found.
Verifiying MsTest.exe location for Visual Studio 12.0...
MsTest.exe found at: C:\Program Files\Microsoft Visual Studio 12.0\Common7\IDE\M
sTest.exe
Running all tests in src\DictionaryDash.Testing
Microsoft (R) Test Execution Command Line Tool Version 12.0.21005.1
Copyright (c) Microsoft Corporation. All rights reserved.
Invalid switch "src\dictionarydash.testing\bin\release\dictionarydash.testing.dl
l".
Please specify a parameter for the /testcontainer switch.
For switch syntax, type "MSTest /help"
Press any key to continue . . .
It is successfully finding MsTest.exe but when it comes to passing an argument to the /testcontainer switch that it fails. The script file is located in the root of the project directory at the same level as the "src" directory.
Thanks!
Aucun commentaire:
Enregistrer un commentaire