gpt4 book ai didi

java - 为什么 junit 测试在 eclipse 中失败但从 ant 中通过?

转载 作者:行者123 更新时间:2023-11-29 08:20:02 24 4
gpt4 key购买 nike

我有一个 JUnit 测试正在检查以确保自定义的 xml 序列化工作正常。自定义的 xml 序列化只是 Xstream 的几个自定义转换器。反序列化器工作,但由于某些原因在 Eclipse 3.x 中,JUnit 序列化失败。在命令行的 Ant 中,它工作得很好。如果我调试并单步执行测试用例,它在 Eclipse 中也能正常工作,但如果在失败的测试用例执行后放置一个断点,它仍然会失败。

什么给了?我有类路径问题吗?

一些附加信息:

预期:

<site>
<name>origin</name>
<version>0.6.0</version>
<description>Stuff</description>
<source>./fake-file.xml</source>
<location>
<latitude deg="44" min="26" sec="37.640"/>
<longitude deg="-57" min="-38" sec="-6.877"/>
<ellipsoid-height value="-79.256" units="meters"/>
<geoid-height value="0.000" units="meters"/>
</location>
</site>

实际:

<site>
<name>origin</name>
<version>0.6.0</version>
<description>Stuff</description>
<source>./fake-file.xml</source>
<location>
<latitude deg="44" min="26" sec="37.640"/>
<longitude deg="-57" min="-38" sec="-6.877"/>
<ellipsoid-height value="-79.256" units="meters"/>
<geoid-height value="-79.256" units="meters"/>
</location>
</site>

写入位置字段的代码:

public void marshal(Object source, 
HierarchicalStreamWriter writer,
MarshallingContext context)
{
ILatLonEllipsoidHeightPoint aLoc = (ILatLonEllipsoidHeightPoint) source;
synchronized(aLoc)
{
writer.startNode(LATITUDE);
writer.addAttribute(DEGREES,
Integer.toString(
PointUnitConversions.getLatitudeHours(aLoc.getLatitude())));
writer.addAttribute(MINUTES,
Integer.toString(
PointUnitConversions.getLatitudeMinutes(aLoc.getLatitude())));
writer.addAttribute(SECONDS,
String.format("%.3f",
PointUnitConversions.getLatitudeSeconds(aLoc.getLatitude())));
writer.endNode();

writer.startNode(LONGITUDE);
writer.addAttribute(DEGREES,
Integer.toString(
PointUnitConversions.getLongitudeHours(aLoc.getLongitude())));
writer.addAttribute(MINUTES,
Integer.toString(
PointUnitConversions.getLongitudeMinutes(aLoc.getLongitude())));
writer.addAttribute(SECONDS,
String.format("%.3f",
PointUnitConversions.getLongitudeSeconds(aLoc.getLongitude())));
writer.endNode();

writer.startNode(ELLIPSOID_HEIGHT);
writer.addAttribute(VALUE,
String.format("%.3f", aLoc.getEllipsoidHeight()));
writer.addAttribute(UNITS, METERS);
writer.endNode();

writer.startNode(GEOID_HEIGHT);
writer.addAttribute(VALUE,
String.format("%.3f", aLoc.getGeoidHeight()));
writer.addAttribute(UNITS, METERS);
writer.endNode();
}
}

PointUnitConversions 调用进行显而易见的数学计算,以获取十进制度数并将其转换为组件部分的相应整数或 double 值。

它只是导致失败的位置的最后一个属性。

最佳答案

如果你调试它就可以正常工作?听起来像是时间问题;调试它会减慢它的工作速度。你能发布一些代码吗?

编辑:
感谢您添加信息。似乎如果当你逐步执行它时它没有失败,但如果你只是正常运行它就会失败,我敢打赌它是一个时间/线程问题。您是在某处的线程中执行此操作吗?有争论吗?还是竞争条件?

关于java - 为什么 junit 测试在 eclipse 中失败但从 ant 中通过?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/634801/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com