Ich möchte eine Methode mit einer hohen zyklomatischen Komplexität (Seufzer) testen und ich hätte gerne eine Klasse innerhalb der Testklasse, so dass eine Methode Testklasse als Knoten in erscheint der Baum. Ist es mit Nunit möglich und wie?Nunit: Ist es möglich, dass Tests verschachtelt erscheinen
Antwort
Sie können es mit verschachtelten Klassen tun, sehr ähnlich dem Beispielcode in Ihrer Frage.
Der einzige Unterschied zu Ihrem Code ist, dass die äußere Klasse das [TestFixture]
Attribut nicht benötigt, wenn es nur für die Struktur verwendet wird und keine Tests selbst hat.
Sie können auch alle inneren Klassen haben eine Setup
Methode teilen, indem sie sie in die äußere Klasse setzen und die inneren Klassen von der äußeren Klasse erben mit:
using NUnit.Framework;
namespace My.Namespace
{
public class MyEntityTests
{
[SetUp]
public void Setup()
{
}
[TestFixture]
public class MyComplexMethodTests : MyEntityTests
{
[Test]
public void when_some_condition_than()
{
}
[Test]
public void when_some_other_condition_then()
{
}
}
}
}
Im NUnit GUI, wird dieser Test-Klasse wie folgt aussehen:
Der Resharper-Testläufer scheint alle Tests zu erkennen, die auf diese Weise strukturiert sind. : \ –
@JohnHoerr In neueren Versionen von ReSharper funktioniert das. –
Wissen Sie, ob innere Klassen eine zusätzliche SetUp-Methode haben können? Dann könnte ein klassenübergreifendes Setup für alle passieren, und ein methodenspezifisches Setup könnte innerhalb der inneren Klasse stattfinden. Nevermind, fand die Antwort hier: https://stackoverflow.com/questions/17659213/nunit-and-setup-in-base-classes – IronSean
Es klingt wie Sie haben eine Klasse, die Sie testen möchten, aber Sie haben zwei Sätze/Arten von Tests zu laufen. Der einfachste Weg dazu besteht darin, zwei Testfelder zu erstellen, jeweils eines. Eine andere Möglichkeit besteht darin, jeden Test in eine Kategorie einzuordnen.
Edit: Wenn alle Tests auf der gleichen Methode sind, ist eine Option, das TestCase Attribut zu verwenden und die Parameter für jeden Test (sowie das erwartete Ergebnis) anzugeben. Die GUI wird jeden Satz TestCase-Parameter verschachteln unter einer einzigen Instanz dieses Testnamens. Dies setzt voraus, dass sich alle Ihre Tests ähnlich verhalten, dh dieselben grundlegenden Asserts oder ExpectedExceptions.
ich verwendet habe, Namespaces, dieses Verhalten zu bekommen (missbraucht?):
namespace MyEntityTests.MyComplexMethodTests
{
[TestFixture]
public class when_some_condition_than
{
[Test]
public void it_should_do_something()
{
}
}
[TestFixture]
public class when_some_other_condition_than
{
[Test]
public void it_should_do_something_else()
{
}
}
}
die Ihnen:
MyEntityTests
- MyComplexMethodTests
- when_some_condition_than
- it_should_do_something
- when_some_other_condition_than
- it_should_do_something_else
In diesem Fall habe ich normalerweise die TestFixture das definieren, verwenden werden Kontext für den Test.
+1 - Gute Lösung für meine aktuellen Bedürfnisse. – JOpuckman
- 1. Warum ist es nicht möglich, Tests Methoden aus anderen Baugruppen
- 2. NUnit alle Tests ignorieren
- 3. machen VS2008 Tests in NUnit Tests
- 4. Verhindern, dass NUnit-Tests abhängig von der Umgebung ausgeführt werden
- 5. Ausführen einzelner NUnit-Tests programmgesteuert
- 6. Ist es möglich, NUnit in Visual Studio 2010 zu integrieren?
- 7. Nunit-Basisklasse mit allgemeinen Tests
- 8. In Intellij ist es möglich, dass ein Modul auf die Tests eines anderen Moduls angewiesen ist
- 9. NUNIT ignoriert meine Tests? Warum?
- 10. Ist es möglich, dass UIActivityViewController AAC anbringt?
- 11. NUnit läuft nicht Suite-Tests
- 12. Ist verschachtelt <form> möglich?
- 13. Ausführen der Tests von NUnit
- 14. sqlite3 und fmdb verschachtelt FMResultSet ist möglich?
- 15. In xUnit.net, ist es möglich, Tests in Reihenfolge auszuführen?
- 16. Ist es möglich, in mstest Tests wie in MbUnit durchzuführen?
- 17. Get Liste der Tests in Nunit-Bibliothek programmgesteuert, ohne dass Tests ausgeführt werden müssen
- 18. Ist es möglich, Appium iOS automatisierte Tests auf Ubuntu auszuführen?
- 19. Ist es möglich, mit Nase mehrere Tests gleichzeitig durchzuführen?
- 20. Ist es möglich, Tests so einzustellen, dass sie kontinuierlich in Android Studio ausgeführt werden?
- 21. Ist es möglich, Travis so einzurichten, dass Tests für mehrere Sprachen durchgeführt werden?
- 22. Dynamische Erstellung von Tests in NUnit
- 23. ist es sinnvoll/möglich, die Konfiguration von Nunit zu verwenden, um das Testverhalten zu ändern?
- 24. Ist es möglich, java.lang.instrument.Instrumentation in JUnit-Tests zu verwenden?
- 25. Unterstützt MSpec "Row-Tests" oder datengesteuerte Tests, wie NUnit TestCase?
- 26. log4net und Nunit Tests, am einfachsten Beispiel
- 27. Laufende NUnit-Tests von Team city
- 28. NUnit-Testadapter zeigt doppelte fehlgeschlagene Tests an
- 29. Timeout für einzelne Tests in NUnit
- 30. Bamboo Nunit Läufer nicht finden Tests
Was Sie nisten die Tests versuchen zu erreichen? – Pedro
Ist das nicht offensichtlich aus der Frage? – epitka
Möchten Sie nur einige Tests durchführen, aber keine anderen? Brauchst du das nur, um sie optisch zu trennen? – Pedro