ActiproSoftware控件中断Moq单元测试



Moq不想在net core 3.1 上使用ActiroSoftware

我有以下问题:创建一个具有以下结构的netcore3.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。您会注意到,第一个结果是由ActiproSoftware.BarCode.Wpf.dll引入的名为It命名空间

它恰好也是一个空的名称空间,但这无关紧要。如果它下面确实包含任何内容,您可以将它们称为It.Something。所以现在发生的情况是,即使在执行了using Moq之后,It对编译器来说仍然是不明确的。

这个愚蠢的空命名空间的存在迫使您使用Moq.来限定调用

最新更新