I would like to propose a minor improvement that could apply to two test cases in `AppResponseTest`(`testSetExceptionWithEmptyStackTraceException` and `testAppResponseWithEmptyStackTraceException`). I will use [testSetExceptionWithEmptyStackTraceException](https://github.com/apache/dubbo/blob/a4052563b779ba0ee8a67eb717b4060698b6960a/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/AppResponseTest.java#L67-L78) as an example.
```java
        Throwable throwable = buildEmptyStackTraceException();
        if (throwable == null) {
            return;
        }
```
On line [68-71](https://github.com/apache/dubbo/blob/a4052563b779ba0ee8a67eb717b4060698b6960a/dubbo-rpc/dubbo-rpc-api/src/test/java/org/apache/dubbo/rpc/AppResponseTest.java#L68-L71), it uses an if condition to check if a precondition is violated, i.e. “buildEmptyStackTraceException fail to construct NPE” If so, the test case return silently without any further execution. There could be two drawbacks to this:

1. The if and return make the logic of the test case implicit
2. It may still be worthwhile to execute the test case and see what happens.

The assume function, introduced after JUnit 4&5 is designed to check for test pre-condition. As [mentioned in the document](https://junit.org/junit4/javadoc/4.12/org/junit/Assume.html):

Assume functions is a set of methods useful for stating assumptions about the conditions in which a test is meaningful. A failed assumption does not mean the code is broken, but that the test provides no useful information.
The if block could be replaced by After refactoring:
```java
        Throwable throwable = buildEmptyStackTraceException();
        assumeNotNull(throwable);
```
This makes the logic more explicit. Although this is a minor change, it can be applied to the two test cases in this `AppResponseTest `.
@Test
    public void testAppResponseWithNormalException() {
        NullPointerException npe = new NullPointerException();
        AppResponse appResponse = new AppResponse(npe);
        StackTraceElement[] stackTrace = appResponse.getException().getStackTrace();
        Assertions.assertNotNull(stackTrace);
        Assertions.assertTrue(stackTrace.length > 1);
    }
    /**
     * please run this test in Run mode
     */
    @Test
    public void testAppResponseWithEmptyStackTraceException() {
        Throwable throwable = buildEmptyStackTraceException();
        if (throwable == null) {
            return;
        }
        AppResponse appResponse = new AppResponse(throwable);
        StackTraceElement[] stackTrace = appResponse.getException().getStackTrace();
        Assertions.assertNotNull(stackTrace);
        Assertions.assertEquals(0,stackTrace.length);
    }
    @Test
    public void testSetExceptionWithNormalException() {
        NullPointerException npe = new NullPointerException();
        AppResponse appResponse = new AppResponse();
        appResponse.setException(npe);
        StackTraceElement[] stackTrace = appResponse.getException().getStackTrace();
        Assertions.assertNotNull(stackTrace);