【问题标题】:.NET Problem removing TestContext from Unit tests.NET 问题从单元测试中删除 TestContext
【发布时间】:2019-10-03 14:40:57
【问题描述】:

我有一个 c# 单元测试项目 (.NET 4.8)。 我的单元测试正在使用我要删除的 .testsetting 文件。 在我的单元测试中,我也使用了 TestContext:

        private TestContext testContextInstance;
        public TestContext TestContext
        {
            get { return testContextInstance; }
            set { testContextInstance = value; }
        }

        [ClassInitialize()]
        public static void MyClassInitialize(TestContext testContext)
        {
            LoadSettings(testContext.DeploymentDirectory);
        }

首先我删除了 .testsettings 文件,然后我修改了删除 TestContext 的单元测试:

        [ClassInitialize]
        public static void MyClassInitialize()
        {
            LoadSettings(Directory.GetCurrentDirectory());
        }

我的问题是当我运行单元测试时出现此错误:

MyClassInitialize 的签名错误。该方法必须是静态的, public,不返回值,应采用单个参数 输入 TestContext。

看着这个issue,我将“Microsoft.VisualStudio.QualityTools.UnittestFramework”的版本从10.0.0.0更改为10.1.0.0,但没有成功。

在运行测试之前,我从“测试”菜单中取消选中 .testsettings,然后将其删除。

当前使用 Visual Studio 2019 版本 16.3.2。

我仍然遇到同样的错误。我是否需要引用另一个 dll 或另一个版本?我需要安装一些东西吗?

更新:

这是我添加参考的方式:

这里是 Visual Studio 在 .csproj 文件中添加的行:

参考 Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework,Version=10.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a,processorArchitecture=MSIL"

这是在 Visual Studio 中查看引用属性的方式:

我仍然得到错误,但奇怪的是如果我在引用属性中重新启动 Visual Studio 我继续看到旧版本(10.0.0.0)!!!

我也尝试使用 Visual Studio 2017 版本 15.9.16。结果一样!

【问题讨论】:

  • 在第一个代码块中,ClassInitialize 后面有括号,删除这些没有帮助?
  • 不,正如您在第二个代码块中看到的那样,我已经删除了它,但没有运气。
  • 是的,但是你没有TestContext 参数:)
  • @aage 我想删除 .testsettings 和 TestContext 的所有使用
  • @mm8 是的,我忘了提。我要更新我的帖子...

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


【解决方案1】:

正如错误消息所说,用ClassInitializeAttribute 修饰的方法必须采用TestContext 参数。

如果您不打算使用 .testsettings 文件,您可以忽略它,但您不能删除该参数。

【讨论】:

  • 它有效,谢谢。我在想一个错误的 dll 加载...
猜你喜欢
  • 2012-04-09
  • 2021-11-23
  • 2021-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-01
  • 1970-01-01
  • 2016-11-18
相关资源
最近更新 更多