Perform unit tests on published web-api - c#

I would like to perform automated unit tests on my web-api project after publish it on IIS but I don't know how ? I can launch tests in Visual Studio, no problem for that.
I have some unit tests in a different project, must I generate the unit tests project an deploy it in the api-web site, and use another soft to perform tests ?
Thanks for your response.

Firstly, what you are proposing here does not sound like Unit tests. They are integration tests that test the entire integration and end to end working across application layers.
Regarding the automated execution, you can easily set that up using CI/CD. You can use VSTS or TeamCity like solutions to run your test cases at a particular schedule. Or, you can run your tests using command line from a system, that has Visual Studio installed.

Related

TFS 2013 Build: Running Unit Tests in Parallel on multiple build agents

I have a XAML build definition running my MSTest unit tests and it takes a long time to execute all of them. I have 4 build agents(VMs with 1 core each) setup in the build environment. I am using Microsoft.TeamFoundation.Build.Activities.RunAgileTestRunner activity in the XAML which is inside a "Run on Agent"(Microsoft.TeamFoundation.Build.Workflow.Activities.AgentScope) activity.
Currently, the unit tests execute on one of the agent. I want to be able to distribute the unit tests to other available agents. Is there a way to do that through TFS configuration or by changing the build definition.
As a workaround, I can split up the unit test project into multiple projects and run them separately on the available agents however I won't be able to see the build summary in one place.
What would be best possible solution for this?
Just check this article : How to run automated tests on different machines in parallel?
The Recommended option:
Create multiple environments with each environment consisting of single machine (read single agent).
Divide all your test cases onto different sets and queue one set on one environment and other set on other environment and so on.
With this each set of test will run in parallel and on different machine.
Also reference below articles:
Hint 2: Configure to run multiple testrunners in parallel in their
own application domain
How To: Run Tests On Different Machines In Parallel
Besides, If upgrading to VNext build is an option, then you can easily achieve that by following the steps mentioned in below articles:
Running Unit Tests on different machine during TFS 2015 build
Speeding up Unit Test Execution in TFS

How we can automatically run the test methods in .net?

I need to run all the test methods once at a time automatically.
I have separate test methods written in separate files.
Is there any way to run all the test methods at a time automatically.
Please suggest if any.
Continuous Tests: http://continuoustests.com/ is a free automated test runner that supports the .NET and Mono platforms. I don't think it has a command line version.
Gallio http://www.gallio.org/ has a command line runner and a GUI runner (Icarus). I use it but I am not sure if it will do automated or continuous test runs
NCrunch http://www.ncrunch.net/ is also an automated test runner that works in Visual Studio. It used to be free but is now payware.
IF you are using NUnit you can use the NUnit GUI. Another option that is mostly framework agnostic is TestDriven.Net.

Framework for running automated acceptance tests after build?

In my current project we are using a TFS Build server for continuous integration (build + run unit tests). We also have a set of automated acceptance tests written as SpecFlow features.
However, these are not integrated into the continuous integration workflow. Today, the application is deployed manually and the acceptance tests are invoked manually.
We would like to automate this in the form of a script/console application or some kind of existing CI tool.
This is what we would like to do periodically, e.g. once every hour:
Ask TFS if there are any new builds
If yes: get the latest successful build from TFS
Deploy the application to our test machine
Execute the SpecFlow tests against the deployed build
Collect the result and present it on some form of web page
Are there any existing tools or frameworks for this? I have read about existing CI servers but they doesn't seem to fit my description. If not, any advice on how to achieve step 1, 2 and 5 programatically or by using command line tools?
In my humble opinion TFS is capable of doing everything that you listed without involving any additional tools. What you might need to do is to setup a Lab Environment and use specific Workflow build definition to achieve it. You need also Test controller and test agents.
The easiest way might be to setup Standard Lab environment which might act in this way -
Build - Deploy - Test workflow
Build got triggered, then got deployed into the lab environment (might be a bunch of either physical or VM machines with installed test agents on them and connected to the Test controller), after that all test are executed and the result is consolidated as a part of the build results.
Hope this helps a bit!
-Rado

C# automatic testing of code

One of my colleague working in java write test cases for his development. As he rebuild, all his testcases will execute on his code and result either fail or passed.
I am workin in .NET, I would like to do similar approach for my application (TDD). Which will perform this automated testing of my code.
What is best approach for writing test cases for window service. We have VS2010 testing, Nunit and CSUnit?
Can anyone give examples for it as I never done this before?
I am fetching some WMI data in service and performing some rest calls, what would be testcases for such operations?
Thanks
There is a lot of discussion on the web concerning unit test frameworks. It seems that it's matter of personal taste and what you need to get done. The functionality between the frameworks is usually very similar. Here are a couple of links about comparing available unit test frameworks.
Unit Testing Frameworks - What are the key features
.NET Unit Testing packages?
NUnit vs Visual Studio 2008's Test Projects for Unit Testing?
Personally i recommend NUnit. It has been around for a long time and it's very mature. And it's free! You can find detailed documentation on the project's homepage. Here is a quick start article.
It's probably not a good idea to test against the running windows service, because that would be an integration test ... That includes: Does the service run with the right permissions, is the deployment complete etc.
It's better to test the functionality of your windows service classes directly by referencing the DLLs from your testing framework.
Therefore it doesn't matter if you use NUnit, Visual Studio Testing or what ever. That depends on your favors.

Is there a Visual Studio Load Test open source equivalent - or something close?

In Visual Studio Team Edition there is a load test tool where you can select unit tests, integration tests etc... to form scenarios which are then used in a load test session with different configurations for example varying usage levels.
Looking at for example the NUnit framework, it would be possible to develop a form of such a tool, along with a base load testing code base, but I was interested if anyone knows of any open source project which has has already done a similar thing which could then be of use for this situation and possibly extended?
Cheers for now,
Andrew
Does this help?
http://www.webload.org/
It's only a load tester, not also built with Unit Tests, Integration Tests, etc - However how about a Continuous Integration setup with CruiseControl.NET as your CI Server which would run automated builds and carry out the tests and then use Webload for your load testing? You can certainly get CruiseControl.NET to run external tools - but IDK whether or not Webload has a console which could automatically run the load tests for you - but it probably could ;)

Categories