Junit Matcher für Komparatoren?

8

Seit einigen Tagen verwende ich jetzt Junit's Matchers Feature. Alles funktioniert OK, aber ich suche nach einem Matcher, der einen Komparator zum Vergleichen verwendet und der sich nicht auf die Objekte als Methoden verlässt.

Ich möchte

ersetzen %Vor%

mit etwas wie (Pseudocode)

%Vor%

Wissen Sie, ob es eine einfache Out-of-the-Box-Lösung gibt? Ich habe bei Google keinen gefunden und möchte keinen schreiben.

    
EhmKah 30.07.2013, 14:24
quelle

4 Antworten

10

Dies wird jetzt in Hamcrest 2.0.0.0 + unterstützt.

Sie können die Organisation verwenden .hamcrest.comparator.ComparatorMatcherBuilder Klasse, um dies zu erreichen, zum Beispiel:

%Vor%     
Nathan Brown 25.03.2015 12:47
quelle
1

Ich hatte das gleiche Problem in hamcrest 1.3 und löste es, indem ich einen Matcher schrieb, der dem Code des IsEqual-Matcher folgt, aber einen gegebenen Comparator anstelle von Object # equals () verwendet.

%Vor%     
SCI 09.12.2016 13:33
quelle
0

Ich bin mir in Hamcrest nicht bewusst, das zu tun. Möglicherweise müssen Sie einen benutzerdefinierten Matcher schreiben. Eine Sache zu beachten: Wenn equals nicht true zurückgibt, sind die Objekte gleich? Wenn Sie nach bestimmten Eigenschaften testen, ist Ihr benutzerdefinierter Matcher möglicherweise klarer als FeatureMatcher ( Gibt es eine einfache Möglichkeit, eine Übereinstimmung zu finden? ein Feld mit Hamcrest? ). Zum Beispiel, wenn der Test für ein erwartetes Label ist:

%Vor%

kann klarer sein als:

%Vor%

Das Schreiben von benutzerdefinierten Zuordnungen erfordert nicht viel Code ( Schreiben von benutzerdefinierten Zuordnungen ) und Es gibt keinen Grund, es zu vermeiden, wenn es Code lesbarer macht.

    
Joe 03.08.2013 12:26
quelle
0

Eine weitere Option ist die AspectJ Framework-Vergleichsstrategie für Objekt und iterables.

%Vor%

Es hat auch Vergleiche nach Feld , z isEqualToComparingOnlyGivenFields und isEqualToIgnoringGivenFields Komparatoren.

%Vor%

In den meisten Fällen können Sie die Assertion ohne benutzerdefinierte Vergleichsstrategie bearbeiten.

    
GKislin 15.11.2017 15:21
quelle

Tags und Links