小编典典

确定我的junit的业务相关代码的执行时间的最佳实践是什么?

java

在eclipse-> junit-view中显示的测试执行时间取决于整个测试用例的执行,包括:

  • 测试数据准备
  • 执行业务逻辑
  • 断言结果

我需要有关我的业务逻辑和仅我的业务逻辑的执行时间的更详细的说明。那就是我在测试用例中所做的:

Date lNow = new Date();
List<Geo> lAllBasisGeo = mGeoEvaluator.evaluateAllGeo(lGeoFixture.getGeo(), lAllGeo);
Date lStop = new Date();
System.out.println("Time of execution in seconds:"+((lStop.getTime()-lNow.getTime())/1000));

好吧…我认为我以一种非常尴尬的方式确定时间。此外,我认为不必声明两个Date变量。

我需要一些建议来更有效地编写该代码…


阅读 212

收藏
2020-10-07

共1个答案

小编典典

在单元测试中,我希望为带有JUnit 4批注的Test添加一个超时,以确定测试是否通过(足够快):

@Test(timeout=100)//let the test fail after 100 MilliSeconds
public void infinity() {
  while(true);
}

为了确定您的业务逻辑的确切运行时间,我将像在关键代码路径之前和之后一样添加Time语句,并重复几次以获取学术上正确的结果,然后再次删除该语句,以简化代码。

long start = System.currentTimeMillis();
//execute logic in between
long end = System.currentTimeMillis();
System.out.println("DEBUG: Logic A took " + (end - start) + " MilliSeconds");
2020-10-07