我正在构建一个ASP.NET核心Web应用程序(.Net Framework),并且很难弄清楚如何将单元测试挂钩到它.我的目标是.net框架版本4.6.1
如果我创建一个针对4.6.1的常规“类库”项目,就像我以前的MVC版本一样,它允许我添加对我的MVC项目的引用(这是同一解决方案的一部分),但是我通过使用添加的任何命名空间语句报告错误,我可能会错过引用或使用语句.如果我双击解决方案资源管理器中“参考”部分下的引用,它会告诉我项目无法找到或尚未构建.
我尝试创建一个“类库(.NET Core)”,但由于我的目标是.Net Framework而不是.NET Core,因此抱怨.我编辑了类库lib.json,使它以.net框架为目标,这让我可以添加我的引用,并且当我在using语句中使用命名空间时,我不会抱怨,但测试运行器没有发现我的测试.我已经尝试了XUnit和NUnit,它们的行为都相同.
是否可以对面向.Net Framework 4.6.1的ASP.Net核心Web应用程序进行单元测试,还是需要提交到.NET Core?
编辑以添加我的测试类
这是我的测试类被剥离到最低限度. TestBank.Services是我想要测试的类.
using System; using TestBank.Services; using Xunit; namespace TestBankUnitTests { public class Class1 { [Fact] public void TestA() { Assert.True(false); } } }
这是我的project.json
{ "version": "1.0.0-*","dependencies": { "xunit": "2.1.0","dotnet-test-xunit": "1.0.0-rc2-build10025","TestBank": "1.0.0-*" },"frameworks": { "net461": { } } }
解决方法
您的project.json需要testRunner设置.根据
project.json
documentation,testRunner设置不仅指定要使用的测试框架,还将项目标记为测试项目.
尝试添加它并查看它是否找到了您的测试(在本地验证它在文件中没有此设置时将找不到测试)
{ "version": "1.0.0-*","frameworks": { "net461": { } },"testRunner": "xunit" }