MSTest没有可执行的测试

4

我阅读了无法执行mstest的测试

我正在尝试通过命令行运行一个单元测试(MS unit tests)。这是我第一次尝试这样做。

我的命令没问题(没有语法错误),如下所示:

mstest /testcontainer:C:\Users\me\source\repos\Test03\UnitTestProject1\bin\debug\UnitTestProject1.dll

问题是我总是在控制台上得到以下回应

加载C:\Users\me\source\repos\Test03\UnitTestProject1\bin\debug\UnitTestProject1.dll...
开始执行...
没有要执行的测试。

我的单元测试非常简单:

namespace UnitTestProject1
{
    [TestClass]
    public class UnitTest1
    {
        [TestMethod]
        public void AddPositive()
        {
            var bll = new ConsoleApp1.Bll();
            var result = bll.Add(2, 5);
            Assert.IsTrue(result == 7);
        }
     }

为什么按照 https://msdn.microsoft.com/en-us/library/ms182489.aspx#testcontainer 的说明操作后,它仍然找不到测试?

整个解决方案的目标是4.6.1,我正在使用VS 2017企业版。


你做了调试版本吗? - Joe Phillips
@JoePhillips:DLL文件在一个调试文件夹中,至少是这样。 - Thomas Weller
1
@ThomasWeller 是的,但它可能是在任何测试存在之前构建的。这里真的没有什么其他问题。 - Joe Phillips
是的,我进行了调试构建。我还尝试了发布构建并更新了路径。我知道这两种构建解决方案之间的区别 :) - MyDaftQuestions
你使用的是哪些版本(mstest、Visual Studio、单元测试项目的目标框架)?在“较新版本”上,您可能需要使用https://msdn.microsoft.com/en-us/library/jj155796.aspx。 - Caramiriel
1
更新使用vstest.console实际上可以运行所有测试。这可以移动到@Caramiriel的答案中。 - MyDaftQuestions
2个回答

2

如果您想使用 mstest.exe,则需要在项目文件中引用以下内容:

<Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />

如果您选择的是相反的方式(这似乎是新创建的测试项目的默认方式):
<Reference Include="Microsoft.VisualStudio.TestPlatform.TestFramework, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\..\packages\MSTest.TestFramework.1.3.2\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.dll</HintPath>
</Reference>
<Reference Include="Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\..\packages\MSTest.TestFramework.1.3.2\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll</HintPath>
</Reference>

你需要使用vstest.console.exe

请注意,VSTest.Console.exe是针对性能进行优化的,并且在Visual Studio 2012中用于替代MSTest.exe


非常感谢您提供的解决方案!它确实帮了我很大的忙! - Ivan B

1

我遇到了同样的问题,花了一些时间才解决。实际的解决方案在评论中。

我的测试是使用vstest.console.exe进行发现的:

Visual Studio Enterprise 2017:

"C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe"

有关更多信息,请参见https://learn.microsoft.com/en-us/visualstudio/test/vstest-console-options


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接