Sto cercando di ottenere alcune classi C# controller, model e repository (accesso ai dati) sotto unit test, in Visual Studio 2015, con ASP.NET Core MVC (ASP.NET 5 durante l'anteprima, ora chiamato ASP.Net Core) app.Come si esegue il test dell'unità su un controller ASP.NET Core o su un oggetto modello?
ho la seguente struttura:
Solution
|
src
|
|-- ITConsole <- main app (ASP.NET MVC, DNX 4.5.1)
|
`-- ITConsoleTests <- What kind of project should this be?
Il MainApp sta utilizzando DNX 4.5.1, ma sembra che se creo un test NUnit Unità di applicazione di serie, è disponibile solo come classe classico .NET Framework libreria, destinata a .NET Framework 4.5.2, non come una libreria di classi Web che può funzionare con la mia app principale.
Quindi, nel caso in cui potrebbe funzionare come un classico framework framework Microsoft Framework Microsoft framework (.net assembly), ho cercato di trovare manualmente e aggiungere riferimenti (aggiungendo riferimento e browse) per ottenere .NET. dipendenze da risolvere. Sono consapevole del fatto che i riferimenti all'assembly .NET sono purtroppo non transitivi. Quindi se UnitTest.dll ha un riferimento a MainApp.dll e MainApp.dll dipende da ASP.NET MVC e tutto il resto da cui dipende, devo farlo da solo. Questo è quello che sto cercando di fare. Ho aggiunto un riferimento a C:\dev\Demo\ITConsole\artifacts\bin\ITConsole\Debug\dnx451\ITConsole.dll
nel mio progetto di test dell'unità in modo da poter iniziare a ottenere il codice da compilare. Le classi di test unitario vengono compilate ma non vengono eseguite, probabilmente a causa del caos di tentare di aggiungere un riferimento a ASP.NET.
In questo momento, anche se ho aggiunto un riferimento a Common.Logging.Core, e Common.Logging, quando faccio clic su "Esegui tutti" sulla explorer test ottengo questo errore:
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)
(Al momento questa domanda è stata posta ...) Nessuno dei modelli di anteprima di asp.net 5 mvc può generare test unitari per te. Puoi persino testare un'unità una nuova e brillante applicazione ASP.NET Core? Vedi lo screenshot qui sotto, per esempio di come il normale modo di iniziare il test unitario non è disponibile in VS 2015 usando MSTEST.
Alla domanda: "Quando vi risolvere il tuo prodotto" domanda qui: https://social.msdn.microsoft.com/Forums/vstudio/en-US/6bf553bc-2bbb-4f2e-a7aa -72c8d9b74852/quando-sarà-in-grado-a-unità-test-in-visual-studio-2015-con-aspnet-mvc6? Forum = vsunittest –
Credo che funzionerà a metà settembre, quando Beta8 rotola su. –
Nel frattempo forse prova questo: http://xunit.github.io/docs/getting-started-dnx.html –