我有以下代码需要UnsupportedEncodingException通过 try-catch 或 throws 声明来处理,但我不想使用它们。 @Test public void serializeAndDeserializeUTF8StringValueExpectingEqual() { String stringValue = "\u0048\u0065\u006C\u006C\u006F"; String deserializedStringValue = serialzeAndDeserializeStringValue(stringValue); assertThat(deserializedStringValue.getBytes("UTF-8")).isEqualTo(stringValue.getBytes("UTF-8")); }例如我避免NullPointerException使用assertThatNullPointerException().isThrownBy如下 @Test public void serializeAndDeserializeNullStringValueExpectingEqual() { String stringValue = null; assertThatNullPointerException() .isThrownBy(() -> OutputStreamUtil.serializeString(stringValue, oStream)); }有什么方法可以避免使用 try-catch 或 throws 声明 UnsupportedEncodingException
2 回答
慕码人2483693
TA贡献1860条经验 获得超9个赞
也许应该这样尝试:
@Test
public void serializeAndDeserializeUTF8StringValueExpectingEqual() {
String stringValue = "\u0048\u0065\u006C\u006C\u006F";
String deserializedStringValue = new String(stringValue);
Throwable thrown = catchThrowable(() -> deserializedStringValue.getBytes("UTF-8"));
assertThat(thrown).isExactlyInstanceOf(UnsupportedEncodingException.class);
}
慕森王
TA贡献1777条经验 获得超3个赞
如果您使用的是 Junit 4 及更高版本,则可以使用:
assertThrows(UnsupportedEncodingException.class, () -> {
nameOfObjectThatThrows.nameOfMethodThatThrows();
});
这类似于您绕过空指针的方式,基本上断言它是从特定方法抛出的。
添加回答
举报
0/150
提交
取消