webentwicklung-frage-antwort-db.com.de

Wie führen Sie Komponententests für ein bestimmtes Zielframework in Visual Studio 2017 durch?

Ich liebe das neue .csproj Format wirklich. Es ist so viel besser als der gefürchtete (eingeschränkte) project.json.

Es gibt jedoch eine Sache, die ich zu trainieren versuche. Ich habe meine (mehreren) Testprojekte zu einem einzigen Projekt mit mehreren Zielen zusammengeführt.

<TargetFrameworks>netcoreapp1.0;net40;net35</TargetFrameworks>

Es scheint jedoch kein Tool im Test Explorer in Visual Studio zu geben, mit dem das Zielframework ausgewählt werden kann - es wird immer nur das erste ausgeführt. Ich habe eine Problemumgehung gefunden - um ein <TargetFramework> -Element mit einem bestimmten Framework hinzuzufügen ...

<TargetFramework>net35</TargetFramework>

Gibt es eine Möglichkeit, das Zielframework auszuwählen, ohne die MSBuild-Datei (.csproj) manuell zu bearbeiten? Ich suche nach einer Option in der GUI, um dies zu tun - insbesondere, damit ich nicht daran denken muss, die .csproj-Datei zu bearbeiten, um die Frameworks vor dem Debuggen eines Tests zu wechseln, oder um daran zu denken, diese Zeile vor der Veröffentlichung zu entfernen.

29
NightOwl888

Ich weiß, dass es sich um eine VS-Frage handelt, aber ich finde es nützlich, dass bei der Ausrichtung auf mehrere Frameworks der Befehl dotnet testsTests für alle Frameworks ausführt im Knoten <TargetFrameworks>:

> dotnet test
...
Test run for [projectPath]\bin\Debug\netcoreapp1.1\XUnitTestProject.dll(.NETCoreApp,Version=v1.1)
...
Test run for [projectPath]\bin\Debug\net461\XUnitTestProject.dll(.NETFramework,Version=v4.6.1)
...

NCrunch kann auch mehrere Ziele erkennen und Tests für jedes Ziel automatisch ausführen:

 enter image description here

5
Andrii Litvinov

Verwenden Sie TargetFrameWorkVersion in einer Laufeinstellungsdatei mit dem Operator 'oder'.

0
John Peters

Die beste Option ist derzeit, die Reihenfolge Ihrer Ziel-Frameworks im csproj zu ändern.

<PropertyGroup>
    <TargetFrameworks>netcoreapp2.1;net45;net46;net461;net462;net47</TargetFrameworks>
</PropertyGroup>

Wenn Sie Komponententests für das net45-Framework debuggen möchten, müssen Sie Folgendes festlegen:

<PropertyGroup>
    <TargetFrameworks>net45;net46;net461;net462;net47;netcoreapp2.1</TargetFrameworks>
</PropertyGroup>

Die Benutzeroberfläche dafür in Visual Studio wäre relativ einfach zu implementieren, dies wurde jedoch zum Zeitpunkt der Beantwortung dieser Frage nicht getan.

0
Michael Brown