Java JUnit:方法X对于Ytypes是不明确的
我有一些testing工作正常。 然后,我把它移动到一个不同的包,现在正在出错。 这里是代码:
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)对于JGraphtUtilitiesTesttypes是不明确的
我怎样才能解决这个问题? 为什么当我将课程移到不同的包时,会出现这个问题?
方法assertEquals(Object,Object)对于types是不明确的…
 这个错误的意思是,你将一个double和double传递给一个有两个不同签名的方法:由于自动装箱, assertEquals(Object, Object)和assertEquals(double, double)都可以被调用。 
 为避免含糊不清,请确保您调用assertEquals(Object, Object) (通过两个assertEquals(double, double)精度)或assertEquals(double, double) (通过两个双精度)。 
所以,就你而言,你应该使用:
 assertEquals(Double.valueOf(70), eccen.get("alpha")); 
要么:
 assertEquals(70.0d, eccen.get("alpha").doubleValue()); 
你可以使用这个方法
 assertEquals(double expected, double actual, double delta) 
这将考虑到四舍五入的浮点错误(例如见这篇文章 )。 你可以写
 assertEquals(70, eccen.get("alpha"), 0.0001); 
这意味着只要两个值的差值小于0.0001,就认为是相等的。 这有两个好处:
- 按照它们应该的比较浮点值
- 不需要强制转换,因为三个参数断言只适用于双打而不适用于通用对象