【问题标题】:Cannot add a unit test to a .NET Core Unit Test Project VS2017无法将单元测试添加到 .NET Core 单元测试项目 VS2017
【发布时间】:2019-05-08 11:19:12
【问题描述】:

当前状态:.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 安装程序上勾选各种不同的选项
  • 大量的谷歌搜索

问题:

如果我向我的解决方案添加一个新的“MSTest 测试项目(.NET CORE)”,然后右键单击新生成的投影转到“添加”>“新项目”,“添加新项目”窗口会显示,但是我找不到用于添加单元测试的测试模板(第二张屏幕截图显示了这些模板,这是一个 .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? 不是同一个问题。这是“创建单元测试”上下文菜单。

【问题讨论】:

  • 它根本不存在。查看此线程以获取最新更新:stackoverflow.com/a/44692742/1145403
  • 谢谢@LennartStoop - 我相信这是关于“创建单元测试”上下文菜单项的不同问题。这也不适用于我的项目,但这不是我遇到的问题。实际上,我无法使用在 .NET Framework 项目中看到的模板创建单元测试类(我将发布另一个屏幕截图以显示它使用该项目风格)

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


【解决方案1】:

因为 UnitTest 类与普通类仅通过 TestClass 装饰器不同,我认为 UnitTest 类没有模板。

【讨论】:

  • 感谢您的回复 - 有一个模板文件将生成带有装饰器属性和所有必要使用的测试类,它适用于 .NET Framework 项目。请参阅我的第二个屏幕截图。至少从 VS2015(甚至可能更早)就可以使用它。
  • 曾经,现在没有
【解决方案2】:

当前状态:.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 安装程序上勾选各种不同的选项
  • 大量的谷歌搜索

【讨论】:

  • 请使用您问题上的编辑链接添加更多信息。 Post Answer 按钮应仅用于问题的完整答案。 - From Review
  • @barbsan 好的 - 所以答案不会是微软仍在开发这些模板(有票证链接)?当然,这对于遇到相同问题的任何其他人都会有用。我同意这不是一个决定性的答案,但它是一个答案,目前的情况如何?
【解决方案3】:

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

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

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

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

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

记住:

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

【讨论】:

    【解决方案4】:

    缺少这些测试模板(至少在 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()
            {
    
            }
       }
    }
    

    您应该将&lt;class_to_test&gt; 替换为您的班级名称。最好将您的测试命名为与您的班级相同的名称 + Test。确保您的课程是公开的,否则测试将不会开始。

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

    【讨论】:

      猜你喜欢
      • 2019-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-07
      • 2012-05-05
      相关资源
      最近更新 更多