В SQL Server 2005/2008 для показа номеров строк в результате Запроса Select:
SELECT ( ROW_NUMBER() OVER (ORDER BY OrderId) ) AS RowNumber,
GrandTotal, CustomerId, PurchaseDate
FROM Orders
ORDER BY является обязательным пунктом. ПО () пункт говорит Механизму SQL сортировать данные по указанному столбцу (в этом случае OrderId) и присваивать номера согласно результатам вида.
Если цикл for работает, то я согласен с номерами.
Если вам нужно повторить весь процесс setup-test-teardown, вы можете использовать TestSuite:
В файле вы просто найдете строку
addTestSuite(YourTestClass.class)
и заключите ее в цикл for.
Я почти уверен, что вы можете использовать addTest вместо addTestSuite, чтобы получить только запустите один тест из этого класса, если вы просто хотите повторить единственный тестовый метод.
Я не верю, что у junit есть встроенный способ именно то, о чем вы просите.
Если несколько запусков дают разные результаты, вы должны иметь модульный тест, проверяющий этот случай. Это может быть так же просто, как запустить цикл for в соответствующих тестовых примерах.
Я знаю, что это не дает прямого ответа на вопрос, но если тест не проходит каждый раз, это запах теста, известный как Erratic Test . Для этого есть несколько возможных причин (из Тестовые шаблоны xUnit ):
Подробности каждого из них задокументированы в главе 16 xUnit Test Patterns .
Если вы действительно хотите запустить тестовый класс до отказа, вам понадобится собственный бегун.
@RunWith(RunUntilFailure.class)
public class YourClass {
// ....
}
, который может быть реализован следующим образом ...
package com.example;
import org.junit.internal.runners.*;
import org.junit.runner.notification.*;
import org.junit.runner.*;
public class RunUntilFailure extends Runner {
private TestClassRunner runner;
public RunUntilFailure(Class<?> klass) throws InitializationError {
this.runner = new TestClassRunner(klass);
}
@Override
public Description getDescription() {
Description description = Description.createSuiteDescription("Run until failure");
description.addChild(runner.getDescription());
return description;
}
@Override
public void run(RunNotifier notifier) {
class L extends RunListener {
boolean fail = false;
public void testFailure(Failure failure) throws Exception { fail = true; }
}
L listener = new L();
notifier.addListener(listener);
while (!listener.fail) runner.run(notifier);
}
}
... выпуск непроверенного кода, чувство вины TDD :)