我正在创建一个返回字符串的JUnit测试用例。但是我一直得到这个错误:
expected: java.util.Optional but was java.lang.String
第一个月
当我试图期待一个字符串时,我得到expected <9999999.0000> but was <Optional[9999999]>
个
(Yes,返回的字符串是数字9999999,而不是整数。)
我已经尽我所能地查找了如何使用String,并且不断地得到关于java.util的信息。可选版本,没有弹出任何关于我实际需要的信息。不仅如此,在我的项目中还有大量的其他测试只是正常地比较字符串。正在使用assertEquals.("hello", getString())
个
它们都能正常工作,但是当我在这里做的时候,错误被抛出了。会不会是因为我从一个对象中获取字符串呢?类似于:Object.getString()
?
3条答案
按热度按时间xbp102n01#
如果您不确定
Optional
是否有值,字符串
如果你确定,你可以省略第一个Assert。如果它不存在,将抛出一个异常,这也将使测试失败。
6qqygrtg2#
也许你正在尝试比较两种不同的类型。将预期值 Package 为Optional
Optional.of(expectedValue)
,或展开实际值actualValue.get()
oalqel3c3#
所以我意识到问题是我把一个字符串变成了一个可选的,因为它在测试的早期可能是null。然后我把它转换回字符串,因为我的方法需要返回一个字符串。
所以这个值是一个string -> optional -> string。我的预期需要反映这一点,所以我的Assert是这样的:第一个月
"4.0000"
是一个字符串,通过Optional.of()
方法将其转换为可选字符串。然后它被转换回一个字符串toString()
。