1

在 ruby​​ 的测试/单元中,软件指示测试运行需要多长时间,以及一系列通过、错误和失败的行为就像一个伪进度条。

除了使用代码分析工具或单独运行测试之外,是否有一种简单的方法可以判断哪些测试方法快哪些慢?

4

3 回答 3

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
于 2009-03-07T16:58:40.810 回答
1

根据莎拉的回答,我更喜欢另一种解决方案:

像 Sarah 写的那样设置,但是 Teardown 应该在列表中添加测试名称和执行时间。
所以你可以评估这个列表,进行排序或其他什么。我不了解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);
  }
}
于 2009-03-09T08:48:32.953 回答
1

如果您使用的是 test-unit 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将进行基准测试。

于 2010-01-16T21:29:02.763 回答