Ich suche nach Anregungen über bewährte Praktiken, die Gleichstellung von schnellen Objekten zu testengleichzusetzen Testing in Swift
Wenn ich ein komplexes Objekt mit vielen Eigenschaften ist es einfach, die Gleichheit Umsetzung zu verpassen.
Was sind die guten Praktiken, um die Umsetzung der Gleichstellung durchzusetzen?
Weitere Details: Natürlich können Sie Tests schreiben zu überprüfen, ob zwei Werte gleich sind, wenn sie sollen, aber das Problem ist, dass diese leicht brechen können. Sie haben eine Struktur in Ihrem Projekt, nach sechs Monaten fügt ein anderer Entwickler dieser Struktur eine Eigenschaft hinzu. Angenommen, er vergisst, die Eigenschaft der Gleichheit hinzuzufügen. Die Gleichheit funktioniert immer noch, die Tests werden bestanden, aber Ihre App wird nur dann unterbrochen, wenn sich diese Eigenschaft ändert. Meine Frage ist, gibt es eine Möglichkeit, dieses Problem zu vermeiden?
In einer nicht trivialen App ist es wirklich einfach, am Ende Modellobjekte mit 10 Werten zu haben und verschachtelte Modellobjekte zu verwenden. Wie kann ich also die Gleichheit meiner Modellobjekte unter Kontrolle halten? Wie kann ich das menschliche Fehlerrisiko bei der Umsetzung der Gleichstellung reduzieren?
Mögliche Lösung: Eine Lösung, die ich im Sinne habe, ist es, ein Skript zu schreiben, die für Klassen und Struktur, die zu einem bestimmten Protokoll entspricht
Diffable : Equatable {}
Für alle Klassen/Strukturen bei der Kompilierung sieht, dass adoptieren Diffable
ich für die Existenz einer Testdatei überprüfen werden, das heißt:
für die Klasse Foo
ich für eine Testklasse aussehen werden Foo_Tests_Diffable
als für alle Objekte innerhalb Foo
ich für die Existenz einer Testfunktion, die
test<property name>Diffable
dh:
class Foo : Diffable {
var title: String
var color: UIColor
var tag: Tag
}
ich überprüfen werde die folgenden Tests innerhalb Foo_Tests_Diffable
func testTitleDiffable {
// Test
}
func testColorDiffable {
// Test
}
func testTagDiffable {
// Test
}
Wenn alle Skript fin ds all erwarteten Tests als der Kompilierung Pass, sonst scheitert es
Aber diese Lösung es zeitaufwendig, und ich weiß nicht, ob ich in der Lage sein werde, es zu implementieren, so dass jeder Vorschlag willkommen
Nun, das ist, warum Sie Tests sind das Hinzufügen, nicht wahr? ;) Es ist eine gute Übung, es als "struct" zu deklarieren, wenn es als gleich angesehen werden soll, wenn alle Felder gleich sind. – redent84
Natürlich können Sie Tests schreiben, um zu überprüfen, dass zwei Werte gleich sind, wenn sie sollten, aber das Problem hier ist, dass dies leicht brechen kann. Sie haben eine Struktur in Ihrem Projekt, nach sechs Monaten fügt ein anderer Entwickler dieser Struktur eine Eigenschaft hinzu. Angenommen, er vergisst, die Eigenschaft der Gleichheit hinzuzufügen. Die Gleichheit funktioniert immer noch, die Tests werden bestanden, aber Ihre App wird nur dann unterbrochen, wenn sich diese Eigenschaft ändert. Meine Frage ist, gibt es eine Möglichkeit, dieses Problem zu vermeiden? –
Bitte erweitern Sie den Titel und den Text Ihrer Frage, um Ihren Kommentar zu berücksichtigen. Aus irgendeinem Grund waren die Kommentare für mich verborgen und ich schrieb eine Antwort von wenig Nutzen für Sie. – CloakedEddy