Я пытаюсь получить классы С# для контроллера, модели и репозитория (доступа к данным) под unit test, в Visual Studio 2015, с ASP.NET Core MVC (ASP.NET 5 во время предварительного просмотра, теперь называемого ASP.NET Core).
У меня есть следующая структура:
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 Unit test, оно будет доступно только как классическая библиотека классов .NET Framework, нацеленная на .NET Framework 4.5.2, а не как Библиотека веб-класса, которая может работать с моим основным приложением.
Итак, на всякий случай он может работать как классический .NET framework. Проект framework (.net assembly). Я попытался вручную найти и добавить ссылки (путем добавления ссылки и просмотра), чтобы получить .NET. зависимости для решения. Я знаю, что ссылки на сборку .NET печально не транзитивны. Поэтому, если у UnitTest.dll есть ссылка на MainApp.dll, а MainApp.dll зависит от ASP.NET MVC и всего остального, от которого это зависит, я должен сделать это сам. Это то, что я пытаюсь сделать. Я добавил ссылку на C:\dev\Demo\ITConsole\artifacts\bin\ITConsole\Debug\dnx451\ITConsole.dll
в мой проект Unit test, чтобы я мог начать компилировать код. Классы Unit test компилируются, но они не запускаются, вероятно, из-за беспорядка попытки добавить ссылку на 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 manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
(В то время, когда задавался этот вопрос...) Ни один из шаблонов предварительного просмотра asp.net 5 mvc не может генерировать для вас модульные тесты. Можете ли вы даже Unit test блестящее новое приложение ASP.NET Core? См. Снимок экрана ниже, например, о том, как обычный способ, которым вы начинаете модульное тестирование, недоступен в VS 2015 с использованием MSTEST.