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

时间:2019-05-08 11:19:13

标签: c# unit-testing .net-core visual-studio-2017

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

我得出的结论是这些缺失(在其他非测试模板中请参见Item templates are missing)。

我现在在GitHub上提出了一个单独的问题,以使这些测试模板可用于.NET Core项目以及直至.NET Framework模板的级别。 您可以在此处关注进度:Unit test templates missing from .NET Core Unit test project

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

为清楚起见,这就是我所尝试的

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

问题:

如果我将新的“ MSTest测试项目(.NET CORE)”添加到我的解决方案中,则右键单击新生成的投影goto“添加”>“新项目”,将显示“添加新项目”窗口,但是找不到用于添加单元测试的测试模板(第二幅截图显示了这些模板,这是一个.NET Framework项目)。目前,我必须复制并粘贴当前的单元测试文件,然后重命名。

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

尝试了以下方法:

  • 仔细检查Visual Studio安装程序,确保没有丢失
  • VS2017最新更新
  • 更新了MSTest适配器NUGET程序包

注意:此人(Unit testing features missing for .NET Core in VS 2019 and Visual Studio Installer?)也遇到了与我相同的问题,但使用VS2019!

只需确认Where is Create Unit Test in VS 2017?并不是同一问题。这是“创建单元测试”上下文菜单。

Screenshot of the Add New Item screen for .NET Core Unit Test projects

Screenshot of the Add New Item screen for .NET Framwork Unit Test projects

4 个答案:

答案 0 :(得分:1)

由于UnitTest类与常规类的区别仅在于TestClass装饰器,因此我认为没有UnitTest类的模板。

答案 1 :(得分:0)

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

我得出的结论是这些缺失(在其他非测试模板中请参见Item templates are missing)。

我现在在GitHub上提出了一个单独的问题,以使这些测试模板可用于.NET Core项目以及直至.NET Framework模板的级别。 您可以在此处关注进度:Unit test templates missing from .NET Core Unit test project

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

为清楚起见,这就是我所尝试的

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

答案 2 :(得分:0)

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

<块引用>

由于 UnitTest 类与常规类仅通过 TestClass 装饰器不同,我认为 UnitTest 类没有模板。

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

<块引用>

已经清理了许多菜单项,并且这些选项已从 .NET Framework 项目中删除,并且在 VS2017 中作为整体清理较少使用/低值选项的一部分。目前我们不打算重新添加这些选项。

我担心 OP 目前可能已经找到了最佳解决方案/解决方法(复制测试类并重命名)。

记住:

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

答案 3 :(得分: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 相同的名称是一种很好的做法。确保您的课程是公开的,否则不会开始测试。

如果您尚未添加要测试依赖项的项目,则可能需要添加该项目。