Тестовые шаблоны Javolution, что нужно и что нельзя делать

Каковы шаблоны, а также что нужно и чего нельзя делать, когда пишете тесты для тестов Javolution ? В частности мне было интересно:

  • TestCase.execute () не разрешает генерирование исключений. Как с ними бороться? Rethrow как RuntimeException или хранить в переменной и утверждать в TestCase.validate () или что-то?
  • Существуют ли графические бегуны, показывающие неудачные тесты, например, в Eclipse? Возможно, кто-то написал JUnit-Wrapper, чтобы я мог использовать Eclipse JUnit Runner?
11.12.2008 09:33:04
2 ОТВЕТА

В источниках Javadoc и Javolution приведены некоторые примеры и обоснование дизайна. Смотрите также статью на стороне сервера .

Тесты Javolution содержат ровно один тест, и выполнение тестируемого кода отделено от валидации различными методами execute () и validate (). Таким образом, один и тот же тестовый класс может использоваться как для регрессионных тестов, так и для тестов скорости (где вызов validate () опущен). Также выполнение многих тестов тривиально распараллеливается.

Недостатки этого разделения: вы получите больше потребления памяти, так как результаты выполнения использованного кода должны быть сохранены до вызова validate (). (Освобождение этих результатов в tearDown, вероятно, является хорошей идеей.) И если проверка происходит из другого класса, чем упражнение, то может быть трудно отладить ошибку.

1
31.01.2010 18:32:27

Вы можете получить какой-то графический тестер, используя следующий адаптер JUnit и запустив его в eclipse. Вы можете запустить / отладить неудачные тесты отдельно. К сожалению, графическое представление не содержит ничего о реальном тесте - оно просто показывает цифры [0], [1] и т. Д.

@RunWith (Parameterized.class) открытый класс JavolutionJUnit4Adapter {

protected final javolution.testing.TestCase test;

public JavolutionJUnit4Adapter(javolution.testing.TestCase testcase) {
    this.test = testcase;
}

@org.junit.Test
public void executeTest() throws Exception {
    enter(REGRESSION);
    try {
        new javolution.testing.TestSuite() {
            @Override
            public void run() {
                test(test);
            }
        }.run();
    } finally {
        exit();
    }
}

@Parameters
public static Collection<javolution.testing.TestCase[]> data() {
    javolution.testing.TestSuite fp = new WhateverSuiteYouWantToRun();
    List<javolution.testing.TestCase> tests = fp.getTestCases();
    Collection<javolution.testing.TestCase[]> res = new ArrayList<javolution.testing.TestCase[]>();
    for (javolution.testing.TestCase t : tests) {
        res.add(new javolution.testing.TestCase[] { t });
    }
    return res;
}

}

0
22.12.2008 10:06:05