I'm supposed to use the VS unit testing framework to ensure all code is working correctly. However I'm having A LOT of trouble getting tests that require command line arguments to work (since command line inputs must be given at runtime.and with unit tests there is no real 'runtime').
![Line Line](https://grantwinney.com/content/images/2017/07/vs4mac-test-setup03.png)
For efficiency & quickness, I prefer to run unit test & get the code coverage from the command line – this helps me spare the Visual Studio IDE to do other tasks. For me, running testing related tasks in the IDE is very slow, especially if you are working in a big project. Here’s how to do it 1) Launch VS command prompt or change to the VS location which contains the tools, e.g.%ProgramFiles% Microsoft Visual Studio 10.0 Team Tools Performance Tools. 2) Instrument the product dlls using vsinstr /coverage “Path To You TestedAssembly.dll” 3) Start coverage monitor by running the command vsperfcmd /start:coverage /output:”Path Of Report.code-coverage” 4) Run your tests which are testing the functionality of “ Path To You TestedAssembly.dll“ (manual or automated, doesnt matter) 5) Stop the coverage monitor by running the command vsperfcmd /shutdown Here’s the details The first main step to collecting code coverage information is to instrument the assemblies that you are interested it. Instrumentation will insert code into the assemblies so that when they are run, code coverage information will be collected. You can instrument both managed and native dll files, exe files and assemblies.
![Studio Studio](/uploads/1/2/5/5/125523448/955084165.png)
The tool that you use to instrument is called VsInstr.exe and it is found in the following directory Microsoft Visual Studio 8 Team Tools Performance Tools Instrumenting the assembly is done by passing the –coverage option to the VsInstr.exe tool: vsinstr –coverage MyAssembly.exe When you instrument the assembly you are modifying it permanently, so the VsInstr tool automatically makes a backup of the file you instrument. In this case the backup will be called MyAssembly.orig.exe. The next step in collecting code coverage information is to make sure that the collection monitor is running so that our collected coverage data gets written somewhere. The coverage monitor is called VsPerfMon.exe and is located in the same location as VsInstr.exe was located.
To start it up for code coverage collection just use the following command: start vsperfmon –coverage –output:mytestrun.coverage Now the command shell will be running your monitor, waiting for some data to collect and write to the output file. Now is the time where you run your test suites or exercise your instrumented code in whatever manner you want to collect coverage information for. The command window will wait until the instrumented code has exited before it will close down and create the coverage file. Once it has, you will now have a code coverage file called mytestrun.coverage that details what code you exercised in your instrumented assembly while the monitor was running.
You can open this file directly from Visual Studio to see a code coverage results window that will give you a breakdown of what percent of the code in your instrumented assembly was covered. References:. (the idea). (the details).