Thursday, November 25, 2010

Message from MSTest: No tests were run because no tests are loaded or the selected tests are disabled.

Today, MSTest annoyed me again, as it did once before (see the post Message in Visual Studio 2010: Changes to your tests are no longer automatically displayed).

When running the test-suite of TextGen, I discovered, that one test was not run at all.

The test seemed to be ok. Neither the test class nor the test method were ignored:

TestClass with TestMethod, both not ignored

But when I tried to execute the test, Visual Studio issued the following message, and the test was not run:

Message "No tests were run because no tests are loaded or the selected tests are disabled."

Message from MSTest: “No tests were run because no tests are loaded or the selected tests are disabled.”

I did not understand that and Google did not provide any satisfactory answers, just some conjectures.

So I played around a bit: If I changed just a single character of the method’s name, MSTest executed the test again. If I renamed that test, but added a new test method with the name in question, it resulted in the same message.

Thus, it’s all about the test method’s name!

Somewhere it must be stored that a test method with that name shall be treated as disabled. Smells like test run configuration, which sounds like the vsmdi-file in the context of MSTest. Doubleclicking my vsmdi-file showed me a list of all my tests (“test list”) – and my test was shown in gray:

Test shown in gray in MSTest's test list

But why that?

Now the path left to go was not all too long: Inspecting the properties of the test revealed the guilty, the test was disabled:

Property TestEnabled set to false

I’ve had no idea why this property was set to false, since I was not aware of it’s very existence, but that was the reason.

Again – easy if you know. But one can fall into despair, when you just want to run your neat little test but you can’t.

BTW, ReSharper-test runner for MSTest ran the test nevertheless. But – test first is much faster with the native MSTest test runner.