Java 在单元测试中确定Jetbrains IntelliJ IDEA 8或9是否正在运行

Java 在单元测试中确定Jetbrains IntelliJ IDEA 8或9是否正在运行,java,reflection,intellij-idea,unit-testing,Java,Reflection,Intellij Idea,Unit Testing,我需要知道,在单元测试的上下文中,Jetbrains IntelliJ idea是否是测试发起人,如果是,运行的是哪个版本(或者至少是“9”或更早) 我不介意做一些肮脏的把戏(反射、文件系统、环境等等),但我确实需要这些把戏来“开箱即用”(每个开发人员都不必设置特殊的东西) 我尝试了一些反射,但找不到可以锁定的唯一标识符 有什么想法吗 哦-语言是Java。关于“想法是测试发起人”的问题,答案相当简单: public static boolean isIdeaRunningTheTest() {

我需要知道,在单元测试的上下文中,Jetbrains IntelliJ idea是否是测试发起人,如果是,运行的是哪个版本(或者至少是“9”或更早)

我不介意做一些肮脏的把戏(反射、文件系统、环境等等),但我确实需要这些把戏来“开箱即用”(每个开发人员都不必设置特殊的东西)

我尝试了一些反射,但找不到可以锁定的唯一标识符

有什么想法吗

哦-语言是Java。

关于“想法是测试发起人”的问题,答案相当简单:

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

     return true;
}
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;
}