我有一个C#ASP.NET核心项目,我想为它编写测试。但是,由于某种奇怪的原因,测试项目找不到我想测试的项目的命名空间(以及类)。即使我明确引用了主项目,这种情况也会发生。这是怎么回事?
我得到的具体错误是:
The type or namespace name 'DeviceWebDisplay' could not be found (are you missing a using directive or an assembly reference?)
如前所述,即使我 * 确实 * 添加了对DeviceWebDisplay
的项目引用,也会发生这种情况。实际上,VisualStudio甚至为我提供了“添加对'DeviceWebDisplay'的引用”的快速操作。但是,无论我是否已经添加了该操作,单击该快速操作都没有任何效果。
有没有人知道是什么原因造成的?作为参考,这里是我在这两个项目中使用的模板:
- 设备网络显示:ASP.NET核心Web应用程序
- 设备Web显示测试:公寓测试项目(.NET Framework)
编辑:
我想它可能是测试项目的目标框架,但由于某种原因,它只升级到6.0,并且下载网站(当我单击“安装其他框架...”时)不提供任何Visual Studio 2022的SDK。
问题是,我的Visual Studio显然安装了.NET 6.0,否则我将无法在主项目中使用它。
可能我需要为测试项目使用不同的模板吗?
5条答案
按热度按时间ee7vknir1#
我发现了问题所在。
基本原因是我基于“单元测试项目(. NETFramework)”模板创建了测试项目。
现在,我创建了基于“MSTest Test Project”模板的第二个测试项目,在那里我可以选择版本6.0。之后,我还可以简单地从上一个测试项目中复制我的测试,然后它就可以正常工作了。
7kqas0il2#
问题是您的项目
DeviceWebDisplay
目标.net 6
,而您的测试项目DeviceWebDisplayTest
目标.NETFramwork,Version=4.7.2
以
.NETFramwork,Version=4.7.2
为目标的项目不能引用项目目标.net6
您应该创建一个新的测试项目目标
.net 6
阅读更多关于differance between .NET vs .NET Framework for server apps的信息
dauxcl2d3#
FWIW,我今天遇到了这个问题,它似乎是由于我的解决方案中有两个不同的“测试”项目,每个项目都试图使用不同版本的UnitTestFramework引起的。通过确保它们都使用相同的版本,它解决了我的测试项目无法解析解决方案中项目的命名空间的问题。
pu3pd22g4#
出现了相同的问题,但这是由于VS未正确更新.csproj文件造成的。
我已将新的测试项目加入至方案,并为尝试测试的项目加入项目相依性。不过,即使测试项目相依性显示正确的项目,{test project}.csproj也没有指向它的ProjectReference标记。
为了解决这个问题,我只是手动添加了ProjectReference ItemGroup xml。
bpzcxfmw5#
对我来说,问题是单元测试项目没有指明以哪个版本的Windows为目标。我的应用程序是一个使用IdeNet 6. 0的WPF应用程序。
我可以通过执行以下操作来解决此问题:
这就解决了NUnit和xUnit的问题。