Существует ли способ заставить Eclipse запустить тест JUnit многократно до отказа?

В SQL Server 2005/2008 для показа номеров строк в результате Запроса Select:

SELECT ( ROW_NUMBER() OVER (ORDER BY OrderId) ) AS RowNumber,
        GrandTotal, CustomerId, PurchaseDate
FROM Orders

ORDER BY является обязательным пунктом. ПО () пункт говорит Механизму SQL сортировать данные по указанному столбцу (в этом случае OrderId) и присваивать номера согласно результатам вида.

27
задан wuppi 23 April 2012 в 13:36
поделиться

4 ответа

Если цикл for работает, то я согласен с номерами.

Если вам нужно повторить весь процесс setup-test-teardown, вы можете использовать TestSuite:

  1. Right- щелкните пакет, содержащий тест, чтобы повторить
  2. Перейдите в раздел «Создать» и выберите создание набора тестов JUnit
  3. Убедитесь, что выбран только тест, который вы хотите повторить, и щелкните мышью для завершения.
  4. Отредактируйте файл. чтобы запустить его несколько раз.

В файле вы просто найдете строку

addTestSuite(YourTestClass.class)

и заключите ее в цикл for.

Я почти уверен, что вы можете использовать addTest вместо addTestSuite, чтобы получить только запустите один тест из этого класса, если вы просто хотите повторить единственный тестовый метод.

11
ответ дан 28 November 2019 в 05:41
поделиться

Я не верю, что у junit есть встроенный способ именно то, о чем вы просите.

Если несколько запусков дают разные результаты, вы должны иметь модульный тест, проверяющий этот случай. Это может быть так же просто, как запустить цикл for в соответствующих тестовых примерах.

2
ответ дан 28 November 2019 в 05:41
поделиться

Я знаю, что это не дает прямого ответа на вопрос, но если тест не проходит каждый раз, это запах теста, известный как Erratic Test . Для этого есть несколько возможных причин (из Тестовые шаблоны xUnit ):

  • Взаимодействующие тесты
  • Взаимодействующие наборы тестов
  • Одинокий тест
  • Утечка ресурсов
  • Оптимизм ресурсов
  • Неповторимый Тест
  • Test Run War
  • Недетерминированный тест

Подробности каждого из них задокументированы в главе 16 xUnit Test Patterns .

3
ответ дан 28 November 2019 в 05:41
поделиться

Если вы действительно хотите запустить тестовый класс до отказа, вам понадобится собственный бегун.

@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 :)

7
ответ дан 28 November 2019 в 05:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: