对于下面的方法,有没有办法创建单元测试来引发DatatypeConfigurationException
,这样我就可以测试它抛出了ConversionException
?
这是我的代码:
public static XMLGregorianCalendar getXMLGregorianCalendar(final LocalDate localDate) {
XMLGregorianCalendar xmlGregorianCalendar = null;
if (localDate != null) {
final String dateString = localDate.format(yyyMMddFormat);
try {
xmlGregorianCalendar = DatatypeFactory.newInstance().newXMLGregorianCalendar(dateString);
} catch (DatatypeConfigurationException e) {
throw new ConversionException("Unable to format LocalDate.", e);
}
}
return xmlGregorianCalendar;
}
最佳答案
您可以通过设置系统属性和要实例化的类名来覆盖工厂将创建的实现。然后该类可以在该方法中抛出异常。
比如像这样
public class FailingDatatypeFactory implements DatatypeFactory {
public XMLGregorianCalendar newXMLGregorianCalendar() { throw new DatatypeConfigurationException() }
}
然后像这样设置
System.setProperty("javax.xml.datatype.DatatypeFactory", FailingDatatypeFactory.class.getName());
现在,在您运行测试用例之后,您应该清除该属性,这样其他测试就不会尝试实例化该实现。
关于java - 为不太可能的场景创建单元测试,这值得吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54149191/