Reporting tool for Nunit 3 and Selenium C# - c#

I'm using Selenium with C# to create my automated tests. Now i have to use some sort of reporting tools to save the test cases whether they passed,failed...etc.
I've seen a lot of tools like Allure, and Jenkins. But they require an XML file. and i can't find it when i run my tests using Visual 2013. Why is that ?
how to obtain these XML files in details if i'm missing something ?
Is there any way i could achieve this with minimum effort ?
EDIT:
How can i run my tests using Nunit console runner ? where can i find it? i downloaded the .zip for nunit but i couldn't find the runner?

The NUnit Visual Studio Adapter does not currently produce XML results, although there is an issue on GitHub to add the ability. Your best bet is to run your tests using the NUnit Console runner when you want to create reports. It always produces an XML result file.
You can install the NUnit Console by adding the NUnit.Console NuGet package to your test project. The console will be in a directory like packages\NUnit.ConsoleRunner.3.4.0\tools in your solution root.
Another option is to install the MSI for the console runner. It will then be under C:\Program Files (x86)\NUnit.org\nunit-console
For creating reports, ReportUnit creates excellent HTML reports from your test results.
To run the tests, I would recommend setting up a simple command line build that builds your solution, runs the tests and then produces the report. For day to day development, just running your tests in Visual Studio or on the command line will likely be enough. Most developers find the Visual Studio Test Explorer Window to be a poor UI, but usable for seeing passed and failed tests and running/debugging them.
If you want to setup a command line build, one good tool is Cake Build. It will take a bit of time to setup, but it is an excellent way to run your build tasks as your project gets larger.

NUnit testing can be run with the nunit-console.exe application which is installed with nunit under {Project_root}/lib/nunit/nunit-console.exe. It downloads with NuGet when NUnit installs.
It can be passed a list of testing binaries, or testing project files, or an nunit project (listing multiple if needed).
{PathToProject}\lib\nunit\nunit-console.exe {PathToTestDll}\Project1.Tests.dll {PathToTestDll}\Project2.Tests.dll /xml=nunit-result.xml
or create an NUnit Project with the NUnit Project Editor if you want to group all your test projects into a single config file.
{PathToProject}\lib\nunit\nunit-console.exe {PathToNUnitProject}\Project.Tests.nunit /xml=nunit-result.xml

Allure doesn't require xml. At lease now :)
https://github.com/unickq/allure-nunit
You just use [AllureNUnit] attribure

Related

Automated testing and continous integration of C# , WPF project

Is there a way to do automated testing and continous integration of C#, WPF projects? I thought about something like Jenkins but as far as I know Jenkins does not support C# projects. It should be a tool to do test driven development with the possibility to do automated testing, also for the GUI. Maybe the build tool form gitlab is an option?
Many thanks in advance!
We do use Jenkins with our C# projects. You may use the MSBuild plugin to build the projects, or use a "Windows Batch Command" like
"C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe" YourSolution.sln /tv:4.0 /p:Configuration=Release /p:TreatWarningsAsErrors="true" /p:CheckForOverflowUnderflow="true" /p:WarningLevel=4 /v:m /t:rebuild
Note: with this command line, I overwrite project specific settings for warnings and arithmetic overflow.
There are also plugins for Unit Tests. We use MSTest. Since I integrated the OpenCover Code Coverage Report Generator, I must use a long command line:
"C:\Program Files (x86)\OpenCover\OpenCover.Console.exe" "-target:C:\vs\Common7\IDE\MSTest.exe" "-targetargs:/nologo /testcontainer:Tests\Project1Tests.dll /testcontainer:Tests\Project2Tests.dll /resultsfile:testresult.trx /category:"^!SqlTests^&^!Perfomance"" -output:coverage.xml
"C:\Program Files (x86)\OpenCover\OpenCoverToCoberturaConverter.exe" -input:coverage.xml -output:outputCobertura.xml -sources:%WORKSPACE%
"C:\Program Files (x86)\ReportGenerator\ReportGenerator.exe" -reports:coverage.xml -targetDir:CodeCoverageHTML
Sadly, you mstest does not accept wild cards for the test projects, so you end up with a terribly long line. Also note that the above command line excludes test categories "SqlTests" and "Performance". Then the output is converted to a format accepted by other plugins.
You may start some virtual machines after the build and the unit tests, and install there your programs by some scripts complete with some test data and do some automated tests of the system.
For the GUI proper, we do not yet have a test strategy.
There are a lot of options to pick from if you are going to use out of the box MS Test. Otherwise you need to check if the service provider can support xUnit runner or other similar testing frameworks that could be used in your solution.
TFS / VisualStudio Online
TeamCity
Jekings with MSBuild
Bamboo
Appveyor
For UI Automation you could check White Framework. It is by far the nicest one in my opinion if compared to features and ease of use.

Generating Unit Test Reports in Visual Studio 2013

I have a set of unit tests in a C# project in Visual Studio 2013.
Is there a way to generate a report from the unit test results?
I need a report as evidence of time when the tests were run and for the results. I dont mean an online CI server report, I just mean a local file report. Are there any nice plugings for VS2013?
I looked into the NUnit plugin with its XML output but its not very accurate, a lot of the data displayed was duplicated and inaccurate (for example my OS type). I'm currently sticking with the Visual Studio MSTest testing framework for now.
I would suggest using vstest.console.exe from the command line to generate the results as follows:
vstest.console.exe YourTestProject.dll /Logger:trx
The results will be saved in the following format: “username_PCName YYYY-MM-DD HH_MM_SS.trx” Then navigate to the folder where your results have been output and use trx2html (this is the version that works with VS2012+) to convert the results into an html report!
trx2html.exe “username_PCName YYYY-MM-DD HH_MM_SS.trx”
I know you said you wanted a plug in, but maybe this will suit your purposes!
What your probably best doing is setting up Continous Integration and Continuous Delivery.
For example we have have setup the following process in our company:
Jenkins(To manage the process)
SVN TRIGGER -> MSBUILD -> UNIT TESTS(Nunit) -> SONAR -> DEPLOYMENT(MSDEPLOY) -> SMOKE TESTS(has deployment succeeded?) -> ROLLBACK(MSDEPLOY) -> SELENIUM TESTS
In the process we have code adherence and a build breaker to stop if any unit tests are not working, basically if any of that fails you cant deploy. The idea is that it's fool proof. Also the delivery pipeline visualisation tools are pretty cool.
You can pull XML reports from Nunit on the command line into Sonar, I had a few issues with it myself, but you need to rebuild before checking against the tests and run the tests against the dll file itself.
Hopefully that will be of some help.

How can I run SpecFlow tests outside of visual studio

I have a suite of SpecFlow tests written in C# using MSTest as the framework. I understand its possible to upload the DLL to MTM and run them through there.
However I was wondering if it was possible for me to execute these tests outside of Visual Studio. For example via a dashboard. I wouldn't want the results uploaded to MTM or TFS as we have a few projects that are not connected to them.
My framework uploads results to a database so thats good enough for me in terms of logging.
I gather I would have to do something with the DLL thats generated from building the project that contains SpecFlow, but I want to avoid using reflection if at all possible.
Does anyone have any ideas on how I could go about this?
Tests written using Specflow are simply tests in selected testing framework (MSTest in your case) so you can run them using test runner for that framework.
In case of MSTest you can use MSTest.exe (located in Visual Studio directory, probably also part of TFS installation). Take a look here http://msdn.microsoft.com/en-US/library/ms182489.aspx on how to run tests (easiest way is to use /testcontainer option).
Please note that MSTest is not the best test framework and running outside of Visual Studio is not the same as running them inside of it. There are problems with config file and separate files needed by tests. If you hit these problems, you can switch to other test framework (I use NUnit).

Save Results in Visual Studio 2012 Test Explorer

I have been working on UI Automation to perform unit testing using NUnit in Visual Studio 2012. The NUnit is integrated in my VS2012. I need to store the results of the test such as pass/fail status, the error message and the other available details in the test explorer somewhere in a human readable form. I know that VS2010 we used to get the .trx file which could be used further. How do I get the result in VS2012? Is it even possible?
I can at least assure you that it's possible with TFS, as we did this in our company. But I don't remember every detail. The basic steps are:
Create a build definition to run NUnit tests (use the conrole runner for this)
Transform the result XML (TestResult.xml) to VS format (.trx) using a tool. There are several around, try to g00g1e it.
Publish the transformed results to TFS (done in the build script).
It seems that it is not possible to somehow log all test results, when run directly in VS. In this case the only chance you have, is to run the tests externally using the NUnit runners (GUI or Console) and store the TestResults.xml output file.

VS 2010 and MBUnit how to run just one test

I have Gallio/MbUnit installed and am using VS 2010 RC and I want to be able to run a single unit test or just all unit tests inside of a TestFixture and not all the tests in the entire project everytime I debug. How do you do this in VS 2010?
Install testdriven.net, there is a free personal version
http://www.testdriven.net/
As Simon said, TD.Net is just working well.
If you work with VS2010 Premium or Ultimate, you may also use the built-in test run feature of VS2010. It should find and run your MbUnit tests as well (if the Gallio add-in was installed)
You may also run your tests by using Resharper 5, but it seems that the latest beta of Resharper 5 has broken the Gallio test driver. It should be fixed soon however.
Apart from the VS2010 IDE, you may also run your tests with Echo (a powerful console application located in the bin folder of the Gallio installation directory), Icarus (Winform application with a nice UI; same location), or from PowerShell (by using the Run-Gallio snap-in). You can also invoke the test runner from one of the numerous extensions of Gallio for MSBuild, NAnt, TeamCity, etc.
I didn't see it earlier but VS 2010 has a Test List Editor which allows me to add the specific test to a a list and run it from there so that only the one test is run. I know that TD.Net probably has a right click/run test option for a test method but I didn't want to buy it and install yet another tool.
Another alternative, how we do it is select the specification inside visual studio, press F5, and it runs the specification via a Rake task.
Example:
class DiffuserObserverSpecification
: AutoMockSpecification<DiffuserObserver, IDiffuserObserver>
class When_diffuser_observer_is_created : DiffuserObserverSpecification
class When_diffuser_observer_has_injected_diffuser_change
: DiffuserObserverSpecification
So to execute the behaviour expectations of all DiffuserObserverSpecification, we select the DiffuserObserverSpecification and press F5.
And to execute just the behaviour for When_diffuser_observer_is_created, select that and press F5.
After one month you forget what I debugger looks like.

Categories

Resources