Drei Möglichkeiten, dem System Tests hinzuzufügen
⭐ Wir haben das System so konzipiert, dass du ganz einfach deine eigenen Prüfungen hinzufügen und das Prüfsystem an deine Bedürfnisse anpassen kannst. Wir haben eine große Anzahl von Basisprüfungen bereitgestellt, aber jedes Projekt hat spezifische Anforderungen, auf die du unser System zuschneiden kannst. Wenn du Prüfungen hinzufügen möchtest, gibt es drei Möglichkeiten, wie du das tun kannst
Die IVerify-Schnittstelle
Dies ist der einfachste Weg. Indem du diese Schnittstelle in deinem MonoBehavior
oder ScriptableObject
Klassen kannst du eine eigene Testlogik hinzufügen, indem du einfach die Überprüfen()
-Funktion. Siehe hier für einen Überblick darüber, wie das funktioniert, und weiter unten findest du weitere Informationen zum Schreiben eines einzelnen Tests.
Schreibe eine Klasse, die von VerifyCheckBase erbt
Die Prüfungen, die an Spielobjekten, Assets usw. durchgeführt werden, sind modular aufgebaut, so dass du dem System leicht neue Prüfungen hinzufügen kannst. Du siehst sie als lange Liste, wenn du ein Profil einrichtest; jeder Eintrag hier ist eine Prüfung. Kurz gesagt, wenn du eine Klasse schreibst, die von der VerifyCheckBase
Klasse und implementieren eine oder mehrere ihrer PerformCheck()
-Funktionen funktioniert das. Siehe hier für weitere Informationen dazu!
Attribute mit VCustomValidationAttribute prüfen
Dies ist die komplexeste Variante, aber dennoch recht einfach. Du kannst dein eigenes Attribut mithilfe der VCustomValidationAttribute
oder durch das Schreiben einer Klasse, die die IVerifyAttribute
Schnittstelle. Siehe hier für weitere Informationen dazu.
Testergebnisse anpassen
Ein Prüfergebnis im System besteht in der Regel aus den folgenden Elementen:
- Kategorie: im Allgemeinen den Namen des Checks, z.B. "Shader Kompilierfehler" in der Abbildung oben.
- Beschreibung / Fehlermeldung: Mittellange Beschreibung des Fehlers für zusätzlichen Kontext
- Langer Beschreibungstext: Dies soll mehr Informationen und Kontext liefern und erscheint als Tooltip, wenn du mit der Maus über ein Testergebnis fährst.
- Schweregrad: ein Enum-Wert, der festlegt, ob es sich um eine Info, eine Warnung oder einen Fehler handelt (bestimmt das zu verwendende Symbol)
- Objektreferenz: Referenz auf das Objekt, das die Prüfung nicht bestanden hat, falls zutreffend
- Maßnahmen zur Behebung des Problems: eine UnityAction, die aufgerufen werden kann, um das Problem automatisch zu beheben, falls zutreffend
Diese Informationen können entweder als Parameter an die unten aufgeführten Funktionen übergeben werden oder mit der folgenden Syntax zu einem VerifyResult hinzugefügt werden:
checker.AddFailedCheck().WithCategory(description)
.WithDescription(errorMessage)
.ForObject(obj)
.WithSeverity(m_Severity)
.WithFix(fixAction);
Zum Beispiel so:
checker.AddFailedCheck().WithDescription("Val sollte gleich 11 sein")
.ForObject(myTestObject)
.WithFix(() => { myTestObject.val = 11; });
Oder, wenn sie als Parameter übergeben werden:
checker.Check(val == 11, "Val sollte gleich 11 sein", myTestObject, () => { myTestObject.val = 11; });
Testen auf Bedingungen
Wenn du die IVerify-Schnittstelle implementierst oder von VerifyCheckBase erbst, kommst du an einen Punkt, an dem du dem System ein Prüfergebnis hinzufügen möchtest. Dies geschieht in der Regel mit Funktionen aus der Klasse VerifyCheckBase wie der Funktion Check():
public void Verify(CheckVerifyInterface checker)
{
checker.Check(meinWert > 10, "Wert muss größer als 10 sein!", this);
}
Wenn der erste Parameter der Prüfen()
-Funktion ist wahrist, wird die Prüfung bestanden. Wenn sie falschwird dem System ein Eintrag als fehlgeschlagene Prüfung mit der von dir angegebenen Beschreibung und dem Objekt hinzugefügt.
Der Einfachheit halber gibt es einige Varianten dieser Funktion:
Check(bool passes, ...)
: Wenn der erste Parameter derPrüfen()
-Funktion ist wahrist, wird die Prüfung bestanden. Wenn sie falschwird dem System ein Eintrag als fehlgeschlagene Prüfung mit der von dir angegebenen Beschreibung und dem Objekt hinzugefügt.CheckNotNull(UnityEngine.Object checkedObj, ...)
: Wenn das angegebene Objekt null ist, schlägt die Prüfung fehl und ein Eintrag wird dem System hinzugefügt.CheckStringNotWhitespace(string checkedString, ...)
: Wenn die angegebene Zeichenkette null ist oder nur Leerzeichen enthält, schlägt die Prüfung fehl und ein Eintrag wird dem System hinzugefügt.CheckStringNotEmpty(string checkedString, ...)
: Wenn der angegebene String leer ist, schlägt die Prüfung fehl und ein Eintrag wird dem System hinzugefügt.CheckElementsNotNull(IEnumerable checkedObj, ...)
: Wenn die angegebene IEnumerable (wie eine List, LinkedList usw.) Nullwerte enthält, schlägt die Prüfung fehl und ein Eintrag wird dem System hinzugefügt.
⭐ Du kannst auch die AddFailedCheck()
-Methode, um eine fehlgeschlagene Prüfung direkt zum System hinzuzufügen, ohne sich auf die vordefinierten Hilfsfunktionen oben zu verlassen.