Ich baue eine ASP.NET-Core-Webanwendung (.Net Framework) und habe es schwer, herauszufinden, wie man Komponententests damit beginnen kann. Ich ziele auf die .net Framework-Version 4.6.1Wie testen Sie Unit ASP.NET Core Web Application (.NET Framework) Unit?
Wenn ich ein reguläres "Class Library" -Projekt für 4.6.1, wie ich für die vorherige Version von MVC erstellen würde, kann ich Referenzen zu meinem MVC-Projekt hinzufügen (die ist Teil derselben Lösung), aber alle Namespaces, die ich über eine using
-Anweisung hinzufüge, melden einen Fehler, bei dem mir eine Referenz fehlt oder eine Anweisung verwendet wird. Wenn ich im Solution Explorer auf den Verweis unter dem Abschnitt "Referenzen" doppelklicke, sagt er mir, dass das Projekt nicht gefunden werden kann oder noch nicht erstellt wurde.
Ich habe versucht, eine "Klassenbibliothek (.NET Core)" zu erstellen, aber das klagt, da ich auf .NET Framework und nicht auf .NET Core ausgerichtet bin. Ich habe die Klassenbibliotheken Project.json bearbeitet, damit sie auf das .net-Framework ausgerichtet sind, und das erlaubt mir, meine Referenzen hinzuzufügen und beschwere mich nicht, wenn ich die Namespaces in einer using
-Anweisung finde, aber keiner meiner Tests vom Test-Runner entdeckt wird. Ich habe sowohl XUnit als auch NUnit ausprobiert und beide verhalten sich gleich.
Ist es möglich, eine ASP.Net Core Web Application, die auf .NET Framework 4.6.1 abzielt, zu testen oder muss ich mich an den .NET Core binden?
bearbeiten meine Testklasse Hier ist meine Testklasse abgespeckte auf das absolute Minimum zu addieren. TestBank.Services ist die Klasse, die ich testen möchte.
using System;
using TestBank.Services;
using Xunit;
namespace TestBankUnitTests
{
public class Class1
{
[Fact]
public void TestA()
{
Assert.True(false);
}
}
}
und hier ist mein 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": {
}
}
}
Unit-Test Entdeckung ist ziemlich heikel. Ich fand, dass ich eine Lösung haben musste, die nur Projekte enthielt, die .net Kernprojekte waren, oder es würde die Tests nicht finden. Zum Beispiel hatte ich eine Kern-Core-MVC-App und eine .core-Bibliothek mit meinen Tests und ein drittes Projekt, das nur eine Klassenbibliothek war (nicht .net-Kern). VS war aus irgendeinem Grund nicht in der Lage, Tests zu erkennen, bis ich diese Nicht-Core-Bibliothek aus der Lösung entfernt hatte. –
Momentan hat meine Lösung nur das MVC-Projekt und die .net-Kernklassenbibliothek (geändert, um .NET Framework 4.6.1 zu targetieren) und entdeckt die Tests nicht. Das lässt mich fragen, ob die Test-Erkennung nur für echte .net-Kern- und nicht .net-Kern-Targeting für das .net-Framework funktioniert. –
Sollte kein Problem sein. Das mache ich auch in meinen Lösungen. Können Sie Ihre Testkurse veröffentlichen? Sie sind öffentliche Klassen mit öffentlichen Methoden, die mit "Fact" oder gleichwertigem Recht gekennzeichnet sind? –