如何避免 Junit 中的 UnsupportedEncodingException
How to avoid UnsupportedEncodingException in Junit
我有以下代码需要 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"));
}
例如,我通过使用 assertThatNullPointerException().isThrownBy
来避免 NullPointerException
,如下
@Test
public void serializeAndDeserializeNullStringValueExpectingEqual() {
String stringValue = null;
assertThatNullPointerException()
.isThrownBy(() -> OutputStreamUtil.serializeString(stringValue, oStream));
}
有什么方法可以避免对 UnsupportedEncodingException
使用 try-catch 或 throws 声明
也许应该这样尝试:
@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);
}
如果您使用的是 Junit 4 及更高版本,您可以使用:
assertThrows(UnsupportedEncodingException.class, () -> {
nameOfObjectThatThrows.nameOfMethodThatThrows();
});
这类似于您绕过空指针的方式,基本上断言它是从特定方法中抛出的。
我有以下代码需要 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"));
}
例如,我通过使用 assertThatNullPointerException().isThrownBy
来避免 NullPointerException
,如下
@Test
public void serializeAndDeserializeNullStringValueExpectingEqual() {
String stringValue = null;
assertThatNullPointerException()
.isThrownBy(() -> OutputStreamUtil.serializeString(stringValue, oStream));
}
有什么方法可以避免对 UnsupportedEncodingException
也许应该这样尝试:
@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);
}
如果您使用的是 Junit 4 及更高版本,您可以使用:
assertThrows(UnsupportedEncodingException.class, () -> {
nameOfObjectThatThrows.nameOfMethodThatThrows();
});
这类似于您绕过空指针的方式,基本上断言它是从特定方法中抛出的。