1. ホーム
  2. java

[解決済み] Java JUnitです。メソッド X はタイプ Y に対してあいまいです。

2022-02-11 10:28:05

質問

いくつかのテストは問題なく動作していました。その後、別のパッケージに移したところ、エラーが発生するようになりました。以下はそのコードです。

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"));
    }

エラーメッセージはこうだ。

メソッド assertEquals(Object, Object) は、JGraphtUtilitiesTest 型ではあいまいです。

どうすれば直るのですか?クラスを別のパッケージに移動すると、なぜこの問題が発生したのですか?

解決方法を教えてください。

assertEquals(Object, Object)メソッドは、...の型に対してあいまいです。

このエラーが意味するのは、あなたが渡した doubleDouble を、2つの異なるシグネチャを持つメソッドに変換します。 assertEquals(Object, Object) assertEquals(double, double) の両方が、オートボックスのおかげで呼び出される可能性があります。

曖昧さを回避するために、必ず assertEquals(Object, Object) (2つのDoubleを渡すことで)または assertEquals(double, double) (2つのダブルスを通過することで)。

ですから、あなたの場合、使ってください。

assertEquals(Double.valueOf(70), eccen.get("alpha"));

または

assertEquals(70.0d, eccen.get("alpha").doubleValue());