无法将单元测试添加到.NET Core单元测试项目中的VS2017

3

当前状态:.NET Core缺少模板

我得出结论,这些模板(包括其他非测试模板,请参见缺失项目模板)确实不存在。

我已在GitHub上提出了一个单独的问题,以使这些测试模板可用于.NET Core项目,并达到.NET Framework模板的水平。您可以在此处跟踪进展:.NET Core Unit测试项目中缺少单元测试模板

希望这对于在.NET Core中缺少这些模板的某人有所帮助。

为了明确起见,我尝试了以下措施:

  • 在不同计算机上尝试多个Visual Studio 2017安装程序
  • 请求同事重现相同的行为
  • 在Visual Studio安装程序上打勾选择各种选项
  • 大量谷歌搜索

问题:

如果我向解决方案添加新的“MSTest Test Project(.NET CORE)”,然后右键点击新生成的项目,转到“Add”>“New Item”,“Add New Item”窗口将显示,但是我找不到添加单元测试的测试模板(第2张截图显示了这些模板,这是一个.NET Framework项目)。目前我只能复制并粘贴当前的单元测试文件,然后将其重命名。

这仅是.NET CORE测试项目的问题。

已尝试以下措施:

  • 通过Visual Studio安装程序确保没有丢失任何内容
  • 更新了VS2017更新
  • 更新了MSTest Adapter NUGET包

注意:这个人(.NET Core中缺少单元测试功能在VS 2019和Visual Studio Installer中?)也遇到了与我相同的问题,但使用的是VS2019!

只是确认一下:在VS 2017中创建单元测试在哪里?不是同样的问题。这是“创建单元测试”上下文菜单。

.NET Core Unit Test项目中Add New Item界面的截图

.NET Framwork Unit Test项目中Add New Item界面的截图


根本就不在那里。请查看此帖子以获取最新更新:https://dev59.com/U1gQ5IYBdhLWcg3wXizH#44692742 - Lennart Stoop
感谢@LennartStoop - 我相信这是关于“创建单元测试”上下文菜单项的不同问题。虽然这对我的项目也不起作用,但这不是我遇到的问题。实际上,我无法使用.NET Framework项目中看到的模板创建单元测试类(我将发布另一个截图以展示它在该类型的项目中的工作方式)。 - ree6
4个回答

1
由于 UnitTest 类只是通过 TestClass 装饰器与普通类不同,我认为没有 UnitTest 类的模板。

感谢回复 - 有一个模板文件,可以生成带有装饰器属性和所有必要的Usings的测试类,对于.NET Framework项目来说它运行良好。请参见我的第二个截图。这至少从VS2015开始就已经可用了(甚至可能更早)。 - ree6
它曾经是,现在不再是。 - baruchiro

0

这些测试模板在(至少在VS2019中)已经丢失,所以你可以创建一个普通的类,并将以下内容用作模板:

using Microsoft.VisualStudio.TestTools.UnitTesting;
using <class_to_test>;

namespace <class_to_test>Tests
{
    [TestClass]
    public class <class_to_test>Test
    {

        [TestMethod]
        public void TestMethod1()
        {

        }
   }
}

你应该将<class_to_test>替换为你的类名。最好的做法是将测试命名为与类相同+Test。确保你的类是公共的,否则测试将无法启动。

如果你还没有这样做,你可能需要添加要测试的项目依赖项。


0

当前状态:.NET Core缺少模板

我得出结论,这些模板缺失了(包括其他非测试模板,请参见缺少项目模板)。

我现在在GitHub上提出了一个单独的问题,以使这些测试模板可用于.NET Core项目,并达到.NET Framework模板的水平。 您可以在此处跟踪进度:.NET Core单元测试项目缺少单元测试模板

希望这对于在.NET Core中缺少这些模板的人有所帮助。

为了明确起见,这是我尝试过的内容:

  • 尝试在不同计算机上安装Visual Studio 2017
  • 要求同事重现相同的行为
  • 在Visual Studio安装程序上勾选各种不同的选项
  • 大量搜索

请使用问题上的编辑链接添加其他信息。Post Answer按钮仅用于完整回答问题。 - barbsan
@barbsan 好的-那么答案不可能是微软仍在开发这些模板(有一条链接吗)?对于任何遇到类似问题的人来说,这肯定是有用的。我同意这不是一个决定性的答案,但现在的情况是什么呢? - ree6

0

baruchiro(2019年5月5日)解释道:

因为UnitTest类仅通过TestClass装饰器与常规类不同,所以我认为没有UnitTest类的模板。

看起来baruchiro是正确的:根据Visual Studio Developer Community上的一篇文章,截至2019年7月25日,这些模板可能不会回来了。

已经清理了很多菜单项,并且在VS2017中也从.NET Framework项目中删除了这些选项,作为清理不常用/低价值选项的整体部分。目前我们不打算将这些选项添加回来。

我担心OP可能已经在此时找到了最好的解决方案/解决方法(复制测试类并重命名)。

记得:

  • 重命名.cs文件以及文件内的类引用。
  • 包含您想要测试的项目的using语句。

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