我有一个具有以下结构的ac#解决方案:
mySolution
myProject
myProject.MSTests
References
Microsoft.VisualStudio.QualityTools.UnitTestFramework
sutMSTests.cs
Run Code Online (Sandbox Code Playgroud)
sutMSTests.cs:
[TestClass()]
public class sutMSTests
{
[TestMethod]
public void MyTest0()
{
Microsoft.VisualStudio.TestTools.UnitTesting.Assert.AreEqual(4, 2 + 2);
}
}
Run Code Online (Sandbox Code Playgroud)
当我尝试通过Test,Run,All Tests In Solution运行测试时,我在VS2008状态行上得到以下信息:
未运行任何测试,因为未加载任何测试或禁用所选测试.
测试,Windows,测试视图显示没有测试.
注意:我手动创建了测试(适用于xUnit.net),而不是使用Microsoft的向导.
我将手工创建的MSTest设置与我使用向导生成的另一个测试设置进行了比较,它们看起来非常相似.
问题:上述错误消息的最可能原因是什么?
编辑2010-02-25: 更多信息:
我右键单击Solution Items文件夹,然后选择Add,New Project,键入Test Projects,Test Documents :: Visual Studio Test Project模板.
新项目的默认设置不会检测并传递测试"TestMethod1".
但是,我的测试没有显示...所以我将我的测试方法复制并粘贴到默认的测试测试项目"TestProject1"中.
我的测试是在"TestProject"中检测到的,但不是在原始位置.
我仔细比较了"TestProject1"的文件,组织和设置与我手工创建的测试项目.
此时,我猜测某些设置是由Visual Studio Test Project模板制作的,不易检测到.
imo,手动创建测试项目就像使用Visual Studio Test Project模板创建测试项目一样容易.
请注意:我并不是说我反对使用Visual Studio Test Project模板; 对我来说,我喜欢理解窗帘背后是什么,因为这让我成为了一个更好的程序员.
使用VS2010,我似乎无法添加其他测试方法.如果我像这样设置我的项目
[TestMethod]
public void Test1()
{
Assert.AreNotEqual(0,1);
}
[TestMethod]
public void Test2()
{
Assert.AreNotEqual(0,1);
}
Run Code Online (Sandbox Code Playgroud)
我的测试视图中显示的唯一测试是Test1.如何确保Test2进入该列表?
编辑: 未初始创建的其他测试未添加到测试列表中.因此,如果我在运行测试后添加Test3,则不会添加Test3.