Ausgabe
Ich hatte einige Tests, die gut funktionierten. Dann habe ich es in ein anderes Paket verschoben und erhalte jetzt Fehler. Hier ist der Code:
import static org.junit.Assert.*;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import org.jgrapht.Graphs;
import org.jgrapht.WeightedGraph;
import org.jgrapht.graph.DefaultWeightedEdge;
import org.jgrapht.graph.SimpleWeightedGraph;
import org.junit.*;
@Test
public void testEccentricity() {
WeightedGraph<String, DefaultWeightedEdge> g = generateSimpleCaseGraph();
Map<String, Double> eccen = JGraphtUtilities.eccentricities(g);
assertEquals(70, eccen.get("alpha"));
assertEquals(80, eccen.get("l"));
assertEquals(130, eccen.get("l-0"));
assertEquals(100, eccen.get("l-1"));
assertEquals(90, eccen.get("r"));
assertEquals(120, eccen.get("r-0"));
assertEquals(130, eccen.get("r-1"));
}
Die Fehlermeldung ist diese:
Die Methode assertEquals(Object, Object) ist für den Typ JGraphtUtilitiesTest mehrdeutig
Wie kann ich das beheben? Warum ist dieses Problem aufgetreten, als ich die Klasse in ein anderes Paket verschoben habe?
Lösung
Die Methode assertEquals(Object, Object) ist mehrdeutig für den Typ …
Dieser Fehler bedeutet, dass Sie ein double
and und Double
an eine Methode übergeben, die zwei unterschiedliche Signaturen hat: assertEquals(Object, Object)
und assertEquals(double, double)
beide aufgerufen werden können, dank Autoboxing.
Um die Mehrdeutigkeit zu vermeiden, stellen Sie sicher, dass Sie entweder callen assertEquals(Object, Object)
(durch Passieren von zwei Doubles) oder assertEquals(double, double)
(durch Passieren von zwei Doubles).
In Ihrem Fall sollten Sie also Folgendes verwenden:
assertEquals(Double.valueOf(70), eccen.get("alpha"));
Oder:
assertEquals(70.0d, eccen.get("alpha").doubleValue());
Beantwortet von – Pascal Thivent
Antwort geprüft von – Dawn Plyler (FixError Volunteer)