績效衡量

如果需要檢查測試方法執行的時間是否太長,可以使用 @Test 註釋的超時屬性提及預期的執行時間。如果測試執行時間超過該毫秒數,則會導致測試方法失敗。

public class StringConcatenationTest {

    private static final int TIMES = 10_000;
    
    // timeout in milliseconds
    @Test(timeout = 20)
    public void testString(){

        String res = "";

        for (int i = 0; i < TIMES; i++) {
            res += i;
        }

        System.out.println(res.length());
    }

    @Test(timeout = 20)
    public void testStringBuilder(){

        StringBuilder res = new StringBuilder();

        for (int i = 0; i < TIMES; i++) {
            res.append(i);
        }

        System.out.println(res.length());
    }

    @Test(timeout = 20)
    public void testStringBuffer(){

        StringBuffer res = new StringBufferr();

        for (int i = 0; i < TIMES; i++) {
            res.append(i);
        }

        System.out.println(res.length());
    }

}

在沒有 JVM 熱身的大多數情況下 testString 將失敗。但是 testStringBuffertestStringBuilder 應該成功通過這個測試。