I am using NUnit asserts within a MSTest project like as follows (NOTE: This shouldn't matter see comments to Dave Falkner's answer):
using Microsoft.VisualStudio.TestTools.UnitTesting;
using MSTestExtensions;
using Assert = NUnit.Framework.Assert;
using Is = NUnit.Framework.Is;
This has worked great in my unit tests, but in my integration tests I am having some trouble. I think it might be due to MSTestExtensions as my unit tests were not using it. Additionally, if I comment out the MSTestExtensions using statement, the inherit MSTestExtensionsTestFixture statement on the class, and the [TestTransaction]
attribute, I don't have this problem. Adding the using statement back in doesn't cause the problem. Adding the [TestTransaction] attribute doesn't cause the problem. Once I inherit from MSTestExtensionsTestFixture on the test class, the issue presents itself.
Basically, the problem is that when I execute the following code in a situation that it will fail (such as the actualPartNumbers list containing two parts, whereas the expected list contains only one), the AssertionException goes unhandled by MSTest.
Assert.That(actualPartNumbers, Is.EquivalentTo(expectedPartNumbers));
Thus the IDE stops at the thrown exception, rather than fail the test. Sometimes this doesn't happen and the test will fail normally. But in most cases the IDE stops at the thrown exception. Any ideas?
FYI:
I'm using MSTestExtensions so that I can do database rollbacks ([TestTransaction]
attribute) after each test. This is similar to MbUnit's rollback feature. I'm overriding MSTest's asserts with NUnit's because I like the fluent style better. Lastly, I'm using MSTest because I'm having issues with NUnit. Particularly with Microsoft Moles and conflicts with third party references that use log4net. I'm trying my best to setup the unit/integration tests to be able to run in either framework in case I switch. But for now MSTest seems to be the least hassle and the integration in the IDE is very nice.