Запустите все тесты в исходном дереве, не пакет

Я изучил это немного на работе (и с Подверсией и с Мерзавцем). Visual Studio на самом деле имеет интеграцию управления исходным кодом API, чтобы позволить Вам интегрировать решения для управления из независимого источника в Visual Studio. Однако большинство людей не беспокоится им по нескольким причинам.

Прежде всего, API в значительной степени принимает, Вы используете рабочий процесс заблокированного контроля. Существует много рычагов в нем, которые являются так или иначе дорогими, чтобы реализовать или просто утончиться, не имеют никакого смысла, когда Вы используете более современный рабочий процесс слияния редактирования.

второе (который связан) - то, что при использовании рабочего процесса слияния редактирования, что и Подверсия и Мерзавец поощряют, Вы не делаете действительно потребность интеграция Visual Studio. Основная уничтожающая вещь об интеграции SourceSafe с Visual Studio состоит в том, что (и редактор) можно сказать сразу, какими файлами Вы владеете, который должен быть проверен, прежде чем можно будет отредактировать, и который Вы не можете проверить, даже если Вы хотите. Затем это может помочь Вам сделать любой вуду управления версиями, который необходимо сделать, когда Вы хотите отредактировать файл. Ничего подобного даже не часть типичного рабочего процесса Мерзавца.

при использовании Мерзавца (или SVN обычно), взаимодействия управления версиями, все происходят или перед сессией разработки, или после него (после того как у Вас есть все работа и протестированный). В той точке это действительно не слишком много боли для использования другого инструмента. Вы не должны постоянно переключаться назад и вперед.

5
задан Paul McKenzie 18 August 2009 в 13:33
поделиться

2 ответа

Ответ состоит в том, чтобы создать набор тестов, который содержит только те тесты, которые находятся в папке модульных тестов, и запустить его вместо этого. Существует аддон junit, который делает именно это, под названием DirectorySuiteBuilder , но я нашел его только после того, как в значительной степени заново изобрел колесо.

И об этом уже спрашивали здесь!

import junit.framework.JUnit4TestAdapter;
import junit.framework.TestSuite;

import java.io.File;
import java.io.IOException;

public class DirectoryTestSuite {
    static final String rootPath = "proj\\src\\test\\java\\";
    static final ClassLoader classLoader = DirectoryTestSuite.class.getClassLoader();

    public static TestSuite suite() throws IOException, ClassNotFoundException {
    final TestSuite testSuite = new TestSuite();
    findTests(testSuite, new File(rootPath));
    return testSuite;
    }

    private static void findTests(final TestSuite testSuite, final File folder) throws IOException, ClassNotFoundException {
    for (final String fileName : folder.list()) {
        final File file = new File( folder.getPath() + "/" +fileName);
        if (file.isDirectory()) {
        findTests(testSuite, file);
        } else if (isTest(file)) {
        addTest(testSuite, file);
        }
    }
    }

    private static boolean isTest(final File f) {
    return f.isFile() && f.getName().endsWith("Test.java");
    }

    private static void addTest(final TestSuite testSuite, final File f) throws ClassNotFoundException {
    final String className = makeClassName(f);
    final Class testClass = makeClass(className);
    testSuite.addTest(new JUnit4TestAdapter(testClass));
    }

    private static Class makeClass(final String className) throws ClassNotFoundException {
    return (classLoader.loadClass(className));
    }

    private static String makeClassName(final File f) {
    return f.getPath().replace(rootPath, "").replace("\\", ".").replace(".java", "");
    }
}
5
ответ дан 13 December 2019 в 05:39
поделиться

К сожалению, нет другого способа разделить вывод компиляции IntelliJ, кроме как по классам и тестовым классам в одном модуле (это классы, на которые смотрит исполнитель тестов ) .

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

2
ответ дан 13 December 2019 в 05:39
поделиться
Другие вопросы по тегам:

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