下面附帶的代碼會產生零星的測試失敗(JUnit),可以在80%的時間內運行。 我正在使用靜態模板對象。在發生故障的情況下,將不同於預期的JAXB對象置於來自transformer.transform(jaxbSource,result)方法調用的'result'中。JAXP-XSLT零星測試失敗
我試過了鎖,並且白白地同步了部分。另外模板對象應該根據規範是線程安全的。轉換中發生了一些奇怪的事情。
錯誤症狀:JUnit測試失敗 - 突然從變換中返回錯誤的對象。
任何想法?
private <S, T> S transform(final Templates template, final Class resultClass, final T data) throws JAXBException, TransformerException {
Transformer transformer = template.newTransformer();
final JAXBSource jaxbSource = new JAXBSource(getCachedJAXBContext(data.getClass()), data);
final Result result = new JAXBResult(getCachedJAXBContext(resultClass));
transformer.transform(jaxbSource, result);
return (S) ((JAXBResult) result).getResult();
}
不知道是什麼導致了它。將它標記爲「JAXB」並且更清楚地描述「零星測試失敗」的症狀會很有用,理想情況下提供的數據足以讓其他人重現問題。 – 2011-03-11 11:41:47
是的,它與XSL樣式表和測試代碼的代碼很相似.. – 2011-03-11 13:29:47
getCachedJAXBContext()是做什麼的?這可能會返回「錯誤」的內容?在變換之前嘗試記錄/打印'jaxbSource',以確保您正在改變自己的想法。 – 2011-03-11 13:51:03