【发布时间】:2015-07-30 17:40:39
【问题描述】:
我正在尝试在 Visual Studio 2015 中使用 ASP.NET Core MVC(预览期间的 ASP.NET 5,现在称为 ASP.NET)在单元测试中获取一些控制器、模型和存储库(数据访问)C# 类核心)应用程序。
我有以下结构:
Solution
|
src
|
|-- ITConsole <- main app (ASP.NET MVC, DNX 4.5.1)
|
`-- ITConsoleTests <- What kind of project should this be?
MainApp 使用的是DNX 4.5.1,但似乎如果我创建一个标准的 NUnit 单元测试应用程序,它只能作为经典的 .NET Framework 类库使用,针对 .NET Framework 4.5.2,而不是作为一个可以与我的主应用程序一起使用的 Web 类库。
所以,以防万一它可以作为经典的 .NET 框架 Microsoft 单元测试框架项目(.NET 程序集),我尝试手动查找和添加引用(通过添加引用和浏览)以获取 .NET 依赖项解决。我知道 .NET 程序集引用很遗憾是不可传递的。因此,如果 UnitTest.dll 有对 MainApp.dll 的引用,而 MainApp.dll 依赖于 ASP.NET MVC,以及它所依赖的所有其他内容,我必须自己做。这就是我想要做的。
我在我的单元测试项目中添加了对C:\dev\Demo\ITConsole\artifacts\bin\ITConsole\Debug\dnx451\ITConsole.dll 的引用,这样我就可以开始编译代码了。单元测试类可以编译,但它们不运行,可能是因为尝试添加对 ASP.NET 的引用的混乱。
现在,即使我添加了对 Common.Logging.Core 和 Common.Logging 的引用,当我在测试资源管理器上单击“全部运行”时,我仍然收到此错误:
Test Name: TestStudyLogReadDocument
Test FullName: ITConsoleTests.ITConsoleTestStudyLog.TestStudyLogReadDocument
Test Source: C:\dev\Demo\ITConsole\ITConsoleTests\ITConsoleTestStudyLog.cs : line 52
Test Outcome: Failed
Test Duration: 0:00:00.0712058
Result StackTrace:
at Couchbase.Configuration.Client.ClientConfiguration..ctor()
at ITConsole.Repository.StudyLogRepository..ctor() in C:\dev\Demo\ITConsole\src\ITConsole\Repository\StudyLogRepository.cs:line 39
at ITConsoleTests.ITConsoleTestStudyLog.SetupDb() in C:\dev\Demo\ITConsole\ITConsoleTests\ITConsoleTestStudyLog.cs:line 30
at ITConsoleTests.ITConsoleTestStudyLog.TestStudyLogReadDocument() in C:\dev\Demo\ITConsole\ITConsoleTests\ITConsoleTestStudyLog.cs:line 53
Result Message:
Test method ITConsoleTests.ITConsoleTestStudyLog.TestStudyLogReadDocument threw exception:
System.IO.FileLoadException: Could not load file or assembly 'Common.Logging.Core, Version=3.1.0.0, Culture=neutral, PublicKeyToken=af08829b84f0328e' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
(在问这个问题的时候......)没有一个 ASP.NET 5 MVC 预览模板可以为您生成单元测试。你甚至可以对一个闪亮的新 ASP.NET Core 应用程序进行单元测试吗?请参阅下面的屏幕截图,例如,在 Visual Studio 2015 中使用 MSTEST 无法使用正常的单元测试开始方式。
【问题讨论】:
-
在这里询问“你什么时候修复你的产品”问题:social.msdn.microsoft.com/Forums/vstudio/en-US/…
-
我相信这将在 9 月中旬推出 Beta8 时发挥作用。
-
相关但关于 xunit 而不是 nunit:stackoverflow.com/questions/31121523/…
标签: c# asp.net-mvc visual-studio-2015 asp.net-core-mvc