績效衡量
如果需要檢查測試方法執行的時間是否太長,可以使用 @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
將失敗。但是 testStringBuffer
和 testStringBuilder
應該成功通過這個測試。