如何解决ActiproSoftware控件打破了Moq单元测试
Moq不想在Net Core 3.1上使用ActiroSoftware
我遇到以下问题:创建具有以下结构的网络核心3.1项目:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFrameworks>netcoreapp3.1</TargetFrameworks>
</PropertyGroup>
<ItemGroup>
<packagereference Include="Moq" Version="4.14.7" />
<packagereference Include="Actiprosoftware.Controls.WPF" Version="20.1.0" />
</ItemGroup>
</Project>
然后在Program.cs中尝试编写以下内容:
using Moq;
namespace moqtest
{
class Program
{
static void Main(string[] args)
{
var q = It.IsAny<string>();
}
}
}
error CS0234: The type or namespace name 'IsAny' does not exist in the namespace 'It' (are you missing an assembly reference?)
此外,隐式指定名称空间将起作用:
var q = Moq.It.IsAny<string>();
我研究了msbuild诊断程序,似乎所有内容都与netcoreapp3.1兼容,但是当您对其进行编译时,它似乎不再能够识别 It 类。
请帮助!
解决方法
打开View > Object Browser
,然后搜索It
。您会注意到,第一个结果是由It
ActiproSoftware.BarCode.Wpf.dll
的命名空间
它也恰好是一个空的命名空间,但这无关紧要。如果其中确实包含任何内容,则将其称为It.Something
。所以现在发生的是,即使您执行了using Moq
,It
对于编译器仍然是模棱两可的。
那个愚蠢的空名称空间的存在迫使我们用Moq.
来限制您的呼叫
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。