MSTest:没有testing运行,因为没有加载testing或select的testing被禁用

我有以下结构的ac#解决scheme:

mySolution myProject myProject.MSTests References Microsoft.VisualStudio.QualityTools.UnitTestFramework sutMSTests.cs 

sutMSTests.cs:

 [TestClass()] public class sutMSTests { [TestMethod] public void MyTest0() { Microsoft.VisualStudio.TestTools.UnitTesting.Assert.AreEqual(4, 2 + 2); } } 

当我尝试通过testing,运行,在解决scheme中的所有testing来运行testing时,我在VS2008状态行上得到以下内容:

没有testing运行,因为没有加载testing或select的testing被禁用。

testing,Windows,testing视图显示没有testing。

注意:我手动创build了testing(适用于xUnit.net),而不是使用微软的向导。

我已经比较了我的手创build的MSTest安装程序和我使用向导生成的另一个testing, 他们似乎是非常相似。

问题:上面的错误信息最可能的原因是什么?

编辑2010-02-25:更多信息:
我右键单击Solution Items文件夹,然后selectAdd,New Project,键入Test Projects,Test Documents :: Visual Studio Test Project模板。

新项目的默认值不做任何testing“TestMethod1”被检测并通过。
但是,我的testing没有显示出来…所以我复制和粘贴我的testing方法到默认的testing项目“TestProject1”。

我的testing在“TestProject”中被检测到,但不在其原始位置。

我仔细比较了“TestProject1”的文件,组织和设置与我手工创build的testing项目。

在这一点上,我猜测一些设置是由Visual Studio Test Project模板创build的,而这个模板不容易检测到。

imo,创build一个testing项目就像使用Visual Studio Test Project模板创buildtesting项目一样简单。

请注意:我并不是说我反对使用Visual Studio Test Project模板; 对我来说,我喜欢理解幕后的内容,因为这使我成为一个更好的程序员。

另一个谷歌 – 这一个原来是我的问题,这是令人尴尬的头脑。 确保您的testing项目被设置为使用您正在使用的任何解决schemeconfiguration。 如果testing组件没有被构build,VS将无法在不存在的组件中find任何testing,并且您将头靠在墙上一会儿:-)

可能有点晚,但这个问题谷歌search,我想我会扔一些面包屑未来谷歌。

Bryan Cookbuild议在他的博客文章中检查ProjectTypeGuids 手动创build一个MStesting项目 。 显然,您需要的魔术GUID为{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}为c#和{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{F184B08F-C81C-45F6-A57F-5ABD9991F28F} 。 查看他的博客文章了解更多详情。

如果博客post消失,则需要在csproj文件的主要属性组中添加以下元素:

 <ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> 

Google员工的另一个想法就是在那里。 我的问题是试图让忽略的testing再次运行。 如果您删除忽略标签,则会出现相同的MS错误消息。 不会自动重新启用testing。 本文将带您完成最后一步。 http://richallen.blogspot.com/2008/05/ms-test-re-enabling-ignored-tests.html

修复很简单,即使它不应该需要,如果Visual Studio工作,它应该。

总结别人的贡献,特别是在这篇文章中 ,这里是最终为我工作的:

  • 使用configurationpipe理器来确保你的testing项目被选中来构build你正在使用的任何configuration和平台(例如:configuration = Debug和platform = x86)
  • 确保你的方法属于一个[TestClass] ,并且它被标记为[TestMethod] ,并且不使用属性[Ignore]
  • 使用testing视图来查找您的testing。 测试视图
  • 打开您的属性窗口( F4 ),并确保您的testing已启用 启用

原来的海报确实是这样做的,但我没有做完这件事就到了这里:

确保[TestClass]在顶部声明,公共范围:

 namespace XYZ.API.Repository.Tests { [TestClass()] public class ClientTests { 

我收到了同样的信息,结果certificate我的networking驱动器上有unit testing项目。 一旦我把它移到本地,它运行良好。 只是一些尝试,如果你得到这个错误。 约翰

我刚刚手动完成这个:

用下面的代码创build一个新的C#类库项目:

 namespace SO_Answer { public class Class1 { public void Test() { var k = "Hello"; } } } 

保存项目,然后进入“文件 – >添加 – >新build项目”,select“testing项目”。 在VS创buildunit testing项目之后,我添加了一个对我之前创build的类库项目的引用。

在我的testing中,我有这样的代码:

 namespace Unit_Test { /// <summary> /// Summary description for UnitTest1 /// </summary> [TestClass] public class UnitTest1 { /// <summary> ///Gets or sets the test context which provides ///information about and functionality for the current test run. ///</summary> public TestContext TestContext { get; set; } #region Additional test attributes // You can use the following additional attributes as you write your tests: // Use ClassInitialize to run code before running the first test in the class // [ClassInitialize()] // public static void MyClassInitialize(TestContext testContext) { } // Use ClassCleanup to run code after all tests in a class have run // [ClassCleanup()] // public static void MyClassCleanup() { } // Use TestInitialize to run code before running each test // [TestInitialize()] // public void MyTestInitialize() { } // Use TestCleanup to run code after each test has run // [TestCleanup()] // public void MyTestCleanup() { } #endregion /// <summary> /// The test method 1. /// </summary> [TestMethod] public void TestMethod1() { var f = new Class1(); } } } 

我添加的唯一代码是一个using语句和var f = new Class1(); 声明。 看着MSTest亚军,我可以看到TestMethod1出现。

我想不出为什么你的unit testing没有被拿起的原因。 唯一一次我有这个是因为我使用MSTest跑步者尝试错误地查看NUnittesting。 尝试从头开始。

这可能是另一个原因。 检查解决scheme是否在64位上运行。 如果是这样,将其更改为x86。

这肯定是一个bug,而且是一个绝对的痛苦,尤其是你必须单独重新启用每一个testing方法。 然而有点侧面思考产生了一个更好的解决scheme – 重命名testing类和重build。 然后重新命名它。 似乎工作。 哎呀 – 不,不。 重命名类可以工作,但是当它重新命名时,它将恢复到原始设置。 诀窍是closuresVisual Studio并删除.vsmdi(visual studiotesting元数据)文件。 这将被重新生成。

当您遇到此问题时,在Visual Studio中,您必须创build一个testing项目。 1.select工具栏中的testing,然后select“新testing”。 创build你的项目,并在这一点上创build你的testing方法。 它应该在这之后工作。

对于后代:我刚刚发现,将testing标记为静态,使得它们在testing列表中无法出现。 显然这是不允许的。

没有其他答案为我工作。 我一直在输出窗口中收到以下消息:

 ------ Discover test started ------ ========== Discover test finished: 2 found (0:00:00.1310428) ========== No tests found to run. 

在我的情况下,只有在我创build了一个名为0-Local的新configuration之后才出现问题。 我必须添加<DebugSymbols>true</DebugSymbols到我的csproj文件的相关部分,所以它看起来像这样:

 <PropertyGroup Condition="'$(Configuration)|$(Platform)' == '0-Local|AnyCPU'"> <DebugSymbols>true</DebugSymbols> <OutputPath>bin\0-Local\</OutputPath> </PropertyGroup> 

你的解决scheme中是否有VSMDI文件? 我相信这个文件是必需的(未经过validation)。

这也是我所面临的典型问题。 但是作为我自己所遵循的最简单的解决scheme是…只需构build一次项目并重新构build一次。 所以你可以解决它。

有同样的问题,但阅读以前的答案,一切看起来不错。

就我而言,我刚刚运行testing套件做了一些小改动,构build了解决scheme并试图运行testing。 不行。 我试了几次,试图找出其他人尝试过的问题。 还是不行

我打入我的一个testing方法中添加一个新的和命中F6来构build解决scheme,并单击运行unit testing。

答对了! 一切顺利。

同样的问题,不同的原因…

TestContext 必须是一个公共variables。

我正在使用public TestContext TestContext方法写入testing输出并将范围更改为private 。 这使得每一个testing都无法发现。 把它改回public帮助。

另一个使用NUnit的谷歌用户,尤其是那些从MSunit testing迁移到NUnit的用户。 请从项目文件中删除将项目标识为MS Test项目的项目typesGuids。

 <ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> 

如果您的代码是CLI(托pipec ++),并且您的testing类从抽象基类inheritance,请确保您的testing类实现基本的纯虚拟方法。 如果你没有实现它,你可能会看到“没有testing发现运行”的消息。