There are times when you end up with a requirement like this:
Mission complete? Yes.
But, you have a problem. Yes, there is a but. What about licensing? Are you allowed to do something like this?
Depends of the person who run your console application. You are allowed to do something like this as long the person who run the console application has a Visual Studio license. This is needed because MSTest component is not allowed to be redistributed based on the current license.
What should I do if clients don’t have a Visual Studio licence?
You could try to use NUnit or other unit test frameworks. There are a lot of frameworks free of charge that can be used.
Below you can find script that extracts the assemblies needed by MSTest if you are using Visual Studio 2013. The script is written using the example written by Wim Coenen for VS2010 (I updated them for VS2013).
The only thing that is missing is the command to extract the registry information needed by MSTest.
You should be able to run Unit Tests from console application.
And yes, we are talking about MSTests. Well, this is not very complicated using MSTest.exeMstest /testcontainer:[pathToOurTestComponent.dll]
After a few day you end up with a new requirement:Run Unit Tests using a console application from a machine that doesn’t
have Visual Studio installed
Using different scripts from internet (like this one: http://mindinthewater.blogspot.ro/2011/02/executing-visual-studio-2010-unit-tests.html), you end up with a configuration that can be used to run unit tests on machines that doesn’t have Visual Studio.Mission complete? Yes.
But, you have a problem. Yes, there is a but. What about licensing? Are you allowed to do something like this?
Depends of the person who run your console application. You are allowed to do something like this as long the person who run the console application has a Visual Studio license. This is needed because MSTest component is not allowed to be redistributed based on the current license.
What should I do if clients don’t have a Visual Studio licence?
You could try to use NUnit or other unit test frameworks. There are a lot of frameworks free of charge that can be used.
Below you can find script that extracts the assemblies needed by MSTest if you are using Visual Studio 2013. The script is written using the example written by Wim Coenen for VS2010 (I updated them for VS2013).
The only thing that is missing is the command to extract the registry information needed by MSTest.
@echo off
setlocal
set here=%~dp0
mkdir mstest
set targetfolder=%here%mstest
set programs=%programfiles%
if exist "%programfiles(x86)%" set programs=%programfiles(x86)%
set vs2013="%programs%\Microsoft Visual Studio 12.0"
set gac2="%windir%"\Microsoft.NET\assembly
set gac1="%windir%"\assembly
echo === Copying from Visual Studio 2013 install folder...
copy %vs2013%\Common7\IDE\mstest* "%targetfolder%"
copy %vs2013%\Common7\IDE\PrivateAssemblies\Microsoft.VisualStudio.Quality* "%targetfolder%"
echo === Copying from %gac1%...
pushd "%gac1%"
dir /s /b *.dll | findstr QualityTools | findstr 12.0.0.0 > %here%tmp.filelist
popd
for /F "tokens=*" %%f in (tmp.filelist) DO copy "%%f" "%targetfolder%"
echo === Copying from %gac2%...
pushd "%gac2%"
dir /s /b *.dll | findstr QualityTools | findstr 12.0.0.0 > %here%tmp.filelist
popd
for /F "tokens=*" %%f in (tmp.filelist) DO copy "%%f" "%targetfolder%"
del tmp.filelist
echo === Done. Check output for errors!
exit /b 0
It should be possible to install MSTest on a server by installing just the test agent (http://www.microsoft.com/en-us/download/details.aspx?id=38186 ) but I'm not sure about the licensing part..
ReplyDeleteIn our case we don't talk about servers. My case was simple users that wanted to run some unit test on their local machines to validate different things.
Delete