Определите в модульном тесте, работает ли Jetbrains IntelliJ IDEA 8 или 9 - PullRequest
2 голосов
/ 22 марта 2010

Мне нужно знать, в контексте модульного теста, является ли Jetbrains IntelliJ идеей инициатора теста, и если да, то какая версия работает (или, по крайней мере, если это "9" или более ранняя версия).

Я не против делать грязные трюки (отражение, файловая система, окружение ...), но мне нужно, чтобы это работало "из коробки" (без того, чтобы каждый разработчик настраивал что-то особенное).

Я попытался поразмышлять, но не смог найти уникальный идентификатор, который мог бы зафиксировать.

Есть идеи?

О - это язык Java.

1 Ответ

2 голосов
/ 25 марта 2010

Относительно вопроса "Является ли IDEA инициатором теста" ответ довольно прост:

public static boolean isIdeaRunningTheTest() {
   try {
     final Class<?> aClass = Class.forName("com.intellij.rt.execution.junit.JUnitStarter");
     } catch (ClassNotFoundException e) {
        return false;
     }

     return true;
}

Что касается определения версии IDEA ...

Следующее работает, покакаталог установки соответствует стандарту программы установки (в Windows я не знаю, где он установлен в системах Mac или Linux).

public static String getIdeaVersionTheDumbWay() {
    String result="unknown";
    final String binPath = System.getProperty("idea.launcher.bin.path");
    if (binPath.contains("IntelliJ IDEA")) {
        final String[] strings = binPath.split(System.getProperty("file.separator")+System.getProperty("file.separator"));
        for (String s : strings) {
            final int startIndex = s.indexOf("IntelliJ IDEA");
            if (startIndex >= 0) {
                result= s.substring(startIndex + 14);
            }

        }

    }

    return result;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...