为 .NET 6.0 创建单元测试

16

我创建了一个 .Net 6 类库,现在想要创建一个测试项目。
然而,.Net 6 测试项目目前不可用。在线上找到的信息是使用 .NET Framework 或 .NET Core 进行测试。

于是我创建了一个 .Net Framework 4.8 的测试项目,并引用了我的类库。

但是我收到了编译器错误:

项目 '..\CircularList\CircularList.csproj' 的目标是 'net6.0'。它不能被一个目标为 '.NETFramework,Version=v4.8' 的项目所引用。 UnitTests

那么我该如何进行单元测试呢?有没有办法从 .Net Framework 4.8 中将目标定位到 .Net 6.0 呢?


1
你尝试过使用"xunit测试项目"或"nunit测试项目"模板吗?这两个模板都支持我的.NET 6安装版本;但是请注意:你不能在.NET 6和.NET Framework 4.8之间进行交叉引用(无论是哪个方向)。 - Marc Gravell
3
.NET 4.8是旧的、遗留、仅限于Windows系统的.NET框架,而.NET 6是新的、跨平台的基于.NET Core的框架,它们非常不同,不能混用。但是在VS中肯定应该有针对.NET Core的单元测试项目,可以搜索"MSTest测试项目",其中清楚地说明了“包含可在.NET Core上运行的单元测试的项目……”,并且这确实支持.NET 6。 - marc_s
如果您正在使用Visual Studios,您可能希望升级到2022版本以使此过程更加容易。我预计该版本将配备一切您需要轻松创建.NET 6项目和测试项目的工具。您需要一个.NET 6测试项目。 - Nathan Cooper
1
你点击了旧的MSTest吗?那个说.NET Framework的?点击XUnit,它会给你一个更现代的框架选择。 - Nathan Cooper
6个回答

9

之前的回答都对我没用。我正在尝试为我的Windows Forms (.NET 6.0)项目添加一个测试项目,尝试了所有可用的项目模板,但都无法工作。

只需要修改测试项目的.csproj文件(通过双击测试项目),并将TargetFrameworknet6.0更改为net6.0-windows即可。


好的。将“目标操作系统”设置为“Windows”。 - steve

4

我猜那一定是答案。如果您想测试一个.net6库,请不要使用项目模板“Unit Test Project (.NET Framework)”。

在项目创建向导中使用更更新的模板。有更新的MSTest模板,但也可以利用更好的模板,如xUnit。


2
这是一种解决方案,可能不是唯一的解决方案:
我还有一个.NET 6.0项目需要测试。
在项目模板选择器中,我选择了针对.NET Core的C# NUnit测试。当进入下一个屏幕时,有一个下拉菜单可以让我选择目标框架。.NET 6.0是默认选项。

1

我创建了一个.NET 6.0类库,收到了相同的消息。

我进入属性,仔细检查我的项目和测试项目是否设置相同,并注意到我的库中没有设置目标操作系统。

在我的项目中有设置,但是在我的类库中没有设置。

一旦我将我的类库"目标操作系统"更改为Windows,与我的项目相同,错误消息就消失了。


1

之前的所有答案对我都没有用。一开始,我认为缺少了 .Net 框架,所以我安装了安装程序,但是没有起作用。 我还尝试将项目的“Target OS”更改为“Windows”,但它没有起作用。我发现测试项目属性目标仍然是 .Net 4.7.2,UI 是旧版本,不像新版本。

然后我删除了从模板创建的测试项目,右键单击要测试的方法并单击“创建单元测试”,然后通过弹出窗口创建了测试项目。这个解决了问题。新的测试项目成功运行,其属性目标是 .Net 6,UI 是新版本。


0
在我的单元测试项目中,尽管已安装了.Net 6.0,但我仍然遇到了这个错误,因为单元测试项目的版本标签是TargetFrameworkVersion,版本为V6.0。
将标签更新为TargetFramework,版本为net6.0解决了这个问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接