I want' to create a protractor test adapter for Visual Studio. I have found I can create it with implementing ITestExecutor and ITestDiscoverer.
I follow the Marcel De Vries documentation (https://xpirit.com/wp-content/uploads/2016/03/Xpirit-magazine-2-Protractor-UI-testing.pdf) but I can't found how to add my extension in Visual Studio.
- I have tried to add my assembly directly in the \Common7\IDE\CommonExtensions\Microsoft\TestWindow\Extensions folder.
- I have tried to create a Vsix and install it. (with UnitTestExtension as Asset)
- I have tried to download Marcel's project (https://github.com/XpiritBV/ProtractorAdapter) compile and install it.
It's not work, the command "vstest.console.exe /listdiscoverers /UseVsixExtensions:true" doesn't list my discoverer. And JS tests don't found by VS.
What i'm doing wrong ?
The documentation is very poor for creating test adapter for VS. There are many URL that can help to understand how implement UTE with JS automated test :
- http://matthewmanela.com/blog/anatomy-of-the-chutzpah-test-adapter-for-vs-2012-rc/
- https://xpirit.com/wp-content/uploads/2016/03/Xpirit-magazine-2-Protractor-UI-testing.pdf
- https://blogs.msdn.microsoft.com/bhuvaneshwari/2012/03/13/authoring-a-new-visual-studio-unit-test-adapter/
In summary :
Step 1 :
- we need to implement ITestExecutor to launch test with protractor prompt command and return the result.
- we need to implement ITestDiscoverer to parse file in argument to find all tests inside.
You can test this primary version without VSix : Go to Visual studio Test extension folder (C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\Extensions for VS 2013) and add your DLL and dependencies. Try to launch tests with commands like that in windows command prompt :
cd C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow
vstest.console.exe "c:\test\test.js"
Step 2 :
By default Visual Studio only parse .dll and .exe files. If you want to parse another file type (.lua, .js, ...) you need to create a parser who explicitly browse source files and find all tests.
You need to create implement two Interfaces :
- ITestContainerDiscoverer
- ITestContainer
This project (https://github.com/XpiritBV/ProtractorAdapter) will be useful to understand how implement that and how adapt your code to subscribe on any changes in your project (Add file, Edit file, Project Load, etc.).
Important : You need to create a VSix project to test that ! If not, Visual Studio don't load your TestContaineDiscoverer.
Important 2 : When you create a VSix file, you need to explain two Assets :
- Type : Microsoft.VisualStudio.MefComponent / Path : |YourProject|
- Type : UnitTestExtension / Path |YourProject|
Hope it's help somebody.
If you need to run the test adapter with vstest.console.exe but don't need visual studio integration you will need to do the following:
- Create a project that is a class library
- Very important: The assembly name must end with .TestAdapter or vstest.console.exe will not recognize your test adapter. You can change this setting in the properties of your project.
- Import Microsoft.VisualStudio.TestPlatform.ObjectModel which for me was located at C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\Microsoft.VisualStudio.TestPlatform.ObjectModel.dll
- You only need to implement ITestDiscoverer and ITestExecutor
- If your test adapter is for .dll or .exe files the default test adapter will run first. I could not find a way to disable this.
The above accepted answer and code was very useful for me when figuring out how to create a test adapter. Be aware that if you are creating a VSIX then the asset type UnitTestExtension is not available in the list but seems to work and can be added in the .vsixmanifest file manually.
Additional useful links:
- https://blogs.msdn.microsoft.com/aseemb/2012/03/03/how-to-make-your-extension-visible-to-the-test-explorer-in-visual-studio-11/
- https://blogs.msdn.microsoft.com/visualstudioalm/2012/07/31/writing-a-visual-studio-2012-unit-test-adapter/
- https://blog.dantup.com/2014/02/some-things-i-learned-while-building-my-visual-studio-test-adapter/
来源:https://stackoverflow.com/questions/38100057/how-to-create-and-install-test-adapter-in-visual-studio