【发布时间】: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 我继续看到旧版本(10.0.0.0)!!!
我也尝试使用 Visual Studio 2017 版本 15.9.16。结果一样!
【问题讨论】:
-
在第一个代码块中,
ClassInitialize后面有括号,删除这些没有帮助? -
不,正如您在第二个代码块中看到的那样,我已经删除了它,但没有运气。
-
是的,但是你没有
TestContext参数:) -
@aage 我想删除 .testsettings 和 TestContext 的所有使用
-
@mm8 是的,我忘了提。我要更新我的帖子...
标签: c# .net visual-studio unit-testing