Согласно ответу Сар, я предпочел бы другое решение:
установки как Сара написала, но Teardown следует добавить имя теста и время выполнения в списке.
Итак, вы можете оценить этот список, сортировать или что угодно. Я не знаю Руби, поэтому я не знаю, будет ли это работать.
Вот некоторые Java-код для JUnit, чтобы объяснить свои мысли ...
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);
}
}
Интересно. В Ruby вы, вероятно, захотите сделать это в классе TestSuite. Если вы добавите его в TestCase, для каждого тестового класса будет один массив execute_times, а не один для пакета. –
В этом разница между BeforeClass и Before. BeforeClass будет выполняться ОДИН раз, прежде чем будет выполнен для каждого тестового примера. – guerda