绩效衡量
如果需要检查测试方法执行的时间是否太长,可以使用 @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
应该成功通过这个测试。