2017-01-18 4 views
3

Ich habe eine ASP.NET-Core-Anwendung (NetCoreApp1.1) Web-API-Projekt, und ich möchte einen Controller dieses Projekts testen. Ich habe eine .NET Core-Klassenbibliothek hinzugefügt (Targeting NetStandard1.6).So testen Sie einen Controller in .NET Core

Nun das Problem, das ich habe, ist, dass nach Why doesn't Microsoft.NETCore.App support netstandard1.6? ich nicht auf das Web-API-Projekt von dieser Klassenbibliothek verweisen kann.

Meine Frage ist dann, bedeutet dies, dass, wenn die Controller nicht woanders platziert sind, ich sie nicht mehr testen kann? Vielleicht gibt es einen Weg dazu, aber ich konnte es in VS 2017 RC nicht erreichen.

+0

Warum erstellen Sie kein xunittest-Projekt, um Ihre Tests auszuführen? – Woot

+0

Würde dies die Referenzierung einer NetCoreApp ermöglichen? –

Antwort

3

Testprojekte sollten Konsolenanwendungen sein, keine Klassenbibliotheken. Eine Konsolenanwendung verweist auf Microsoft.NETCore.App und sollte keine Probleme haben, auf Ihr Web-API-Projekt zu verweisen.

Ein einfaches Beispiel für die project.json für einen Arbeitstestprojekt ist:

{ 
    "dependencies": { 
    "dotnet-test-xunit": "2.2.0-preview2-build1029", 
    "Microsoft.NETCore.App": { 
     "type": "platform", 
     "version": "1.0.1" 
    }, 
    "xunit": "2.1.0", 
    "MyApiProject": { 
     "target": "project" 
    } 
    }, 
    "frameworks": { 
    "netcoreapp1.0": { 
     "imports": "dotnet" 
    } 
    }, 
    "testRunner": "xunit", 
} 

Wenn Sie .csproj in VS 2017 mit sind, es anders aussehen werde, aber das Prinzip soll gleich sein. Das Testprojekt kann das API-Projekt lokal referenzieren und verwendet einen Test-Runner wie Xunit, um Tests auszuführen.

+1

Das hat funktioniert und Sinn gemacht. Vielen Dank! Meine nächste Herausforderung ist es, NUnit von VS 2017 RC laufen zu lassen –

Verwandte Themen