识别慢速运行的测试

时间:2009-03-07 13:10:32

标签: ruby unit-testing testunit

在ruby的测试/单元中,软件指示测试运行所需的时间,并且一系列通过,错误和失败就像伪进度条。

除了使用代码分析工具或单独运行测试之外,还有一种简单的方法可以告诉哪些测试方法快速且哪些测试方法很慢?

3 个答案:

答案 0 :(得分:2)

当我需要在大型测试套件中执行此操作时,我会覆盖Test :: Unit :: TestCase设置和拆卸。它没有给出精确的测量结果,但它可以帮助评估相对速度。

module Test
  module Unit
    def setup
      @start_time = Time.now
    end

    def teardown
      puts "#{@method_name}: #{Time.now - @start_time}s"
    end
  end
end

答案 1 :(得分:1)

根据Sarah的回答,我更倾向于另一种解决方案:

像莎拉写的设置,但是拆解应该将测试名称和执行时间添加到列表中 所以你可以评估这个列表,进行排序或其他什么。我不认识Ruby,所以我不知道它是否会起作用。

以下是JUnit的一些Java代码,用于解释我的想法......

public class ExecutionTimeTest {

  public static ArrayList<Double> executionTimes;

  public double start;

  @BeforeClass
  public static void initializeList() {
    executionTimes = new ArrayList<Double>();
  }

  @AfterClass
  public static void printExecutionTimes() {
    int i = 1;
    for (Double time : executionTimes) {
      System.out.println("Test " + (i++) + ": " + time);
    }
  }

  @Before
  public void startExecutionTime() {
    start = System.currentTimeMillis();
  }

  @After
  public void calculateExecutionTime() {
    executionTimes.add(System.currentTimeMillis() - start);
  }
}

答案 2 :(得分:1)

如果您正在使用测试单元gem,则以详细模式运行测试将为您提供每次测试所用时间的信息:

ruby test/test_unit.rb --verbose
Loaded suite test/test_unit
Started
ChaserTestCase: 
  test_handle_funny_characters_in_class_method_names:   .: (0.000645)
  test_handle_funny_characters_in_instance_method_names:.: (0.000523)
  test_modify_and_unmodify_class_method:                .: (0.000534)
...
Finished in 0.019894 seconds.

MiniTest将also进行基准测试。