Does any one know if I can test native code in VS Test 2010?
As of VS2010, native C++ unit testing is not directly supported by Visual Studio. See MSDN, specifically:
You cannot have test projects with unit tests that use unmanaged C++.
You can still do native C++ unit testing with Visual Studio, but it won't be as integrated as other VS features. See this SO answer for a number of native unit testing frameworks and libraries. I have not used any of those, so I cannot give any guidance there.
I would bite the bullet, download Boost and get the test suite compiled. Once you get into it, it's as easy as VS tests.
Related
I want to get started on Unit Testing in C++ (pure C++, not .NET), since I have never done it before. Always used assert and cout.
So far, the only good Question with detailed answers, I have found is https://stackoverflow.com/questions/13699/choosing-a-c-unit-testing-tool-framework, but it is dated to 2008.
I would like to hear some opinions about currently available C++ Unit Testing compatible with Visual Studio 2012. What are their Cons and Pros ? How easy/hard to learn them(i.e availability of learning materials) ? How Popular they are ? Are they being actively developed, supported ?
There are several frameworks that I am aware of: Google's Testing Framework, Boost Testing Lib.
(Also, in addition to Visual Studio, I use Intel Parallel Studio XE 2013, primarily for static analysis)
At the moment we only use the unit testing functionality which comes with VS12 (Premium). We also tested other Frameworks (e.g. NUnit), but for now VS12 testing suits well.
I use TUT unit testing framework: http://tut-framework.sourceforge.net/
I'm doing some research on Unit Testing and most of the questions I see on Stack Overflow about NUnit are at least a year old now. Are you using any new tools for Unit Testing that are available via Visual Studio 2010 and .NET 4.0? Please share any new technologies that you are aware of. Thanks!
MSTest is built into Visual Studio 2010 and we've been using it at my companies since VS 2008. It is robust and simple unit testing framework and you don't have to run anything third-party.
Just create a new unit test project and you should be off to the races.
That said, I know a lot of people who use NUnit and are perfectly happy with it.
NUnit is still one of the most popular unit testing frameworks out there. MsTest is also a popular framework because it is included by default with VS. If you want a framework that does its own thing you could look at XUnit. One I have used in the past and enjoyed is MbUnit.
In my opinion I would spend more time into looking into your mocking framework. They differ far more than testing frameworks. Some of the more popular are Moq, NMock, Easy Mock, Rhino Mocks, if you want free. For paid you have TypeMock and Just Mock. My current preference would be Moq because of the more fluent typing.
One of the recent testing-related cool things that came from Microsoft is Pex. Lifted from the project page:
Pex automatically generates test
suites with high code coverage. Right
from the Visual Studio code editor,
Pex finds interesting input-output
values of your methods, which you can
save as a small test suite with high
code coverage. Microsoft Pex is a
Visual Studio add-in for testing .NET
Framework applications.
Definitely worth checking.
It seems to be mainly tailored to .net code.
Only managed C++ (/clr:safe): Unit Tests and C++
You could use WinUnit (if you are not already): Simplified Unit Testing for Native C++ Applications
You can't get the slick attribute-driven features of managed test frameworks with native unit test frameworks. If you want a graphical runner which lets you select individual tests or fixtures within Visual Studio, grab the excellent, free Visual Assert. It supports both the cfix framework and (via cfix) a WinUnit compatibility mode. I've been happily using it for several months now in both 2008 and 2010.
Is there a way to create unit tests that can be run with the Visual Studio Unit Testing Framework as well as NUnit? I personally prefer the Visual Studio one, but the build server I am using only does NUnit, so I would like to support both if possible.
EDIT: To clarify, I would like to run my own tests using Visual Studio (without add-ons or extensions), but other collegues would like to use NUnit, and the build server needs NUnit. I cannot change anything except the code, so I thought there would be an easy way to satisfy everyone, but its looking to be a bit of a challenge :)
Sounds like you need a Visual Studio test runner. If you install Gallio, it will use VS test runner to run any kind of unit tests(xUnit, nUnit, MBUnit). Also Resharper and CodeRush have their own test runners.
Here is one way to do that using precompiler directives and aliases via the "using" keyword
JustCode has a unit test runner that can run tests written using xUnit, NUnit, MbUnit, or Visual Studio Unit Testing Framework. You can see it in action here
You can write framework agnostic asserts using a library called Should. It also has a very nice fluent syntax which can be used if you like fluent interfaces. I had a blog post related to the same.
http://nileshgule.blogspot.com/2010/11/use-should-assertion-library-to-write.html
Visual Studio 2010 offers a lot of comfortable tools for unit testing via its built in test runner. Unfortunately we can't use MSTest for our unmanaged c++ codebase. Is it possible to switch from MSTest to e.g. Google.Test and have it integrated with the built in Visual Studio test runner?
Thanks in advance!
I have not seen anyway to integrate another unit testing framework into the VS test runner.
You might look at some VS add-in test runners, testdriven.net and gallio are two.
Kindness,
Dan
It's possible to use gtest (google test) in VS2010 and have it integrated with the IDE thanks to the extension: GoogleTestAddin
You can be interested by this similar thread: Viewing Google Test results within Visual Studio