У меня есть проект maven, а бег работает mvn test
выполняет тестовые примеры в рамках отдельного процесса.Junit- Как подключить тест к существующему процессу
Мой вопрос: есть ли способ запустить тесты, присоединившись к существующему процессу? Чтобы тесты могли использовать подключенную среду процесса.
Я нашел surefire имеет JVM
property, found here, но не смог получить, как установить его, если это правильное понимание.
Update: Поскольку проект основан SpringBoot, поэтому я казнены сервер (Скажите это тестовый сервер), как this-
java -jar target/server-0.0.1-SNAPSHOT.jar
И обновленными тест Junit классов, как this-
@Before
public void setup() throws Exception {
VirtualMachine virtualMachine = attach(getTestServerVM());
System.out.println(virtualMachine.id());
}
@Test
public void emptyTest() {
Stack<String> stack = new Stack<String>();
assertTrue(stack.isEmpty());
}
private static VirtualMachine attach(VirtualMachineDescriptor virtualMachineDescriptor) {
VirtualMachine virtualMachine = null;
try {
virtualMachine = VirtualMachine.attach(virtualMachineDescriptor);
} catch (AttachNotSupportedException anse) {
System.out.println("Couldn't attach " + anse);
} catch (IOException ioe) {
System.out.println("Exception attaching or reading a jvm." + ioe);
}
return virtualMachine;
}
private static VirtualMachineDescriptor getTestServerVM() {
String name = "target/server-0.0.1-SNAPSHOT.jar";
List<VirtualMachineDescriptor> vms = VirtualMachine.list();
VirtualMachineDescriptor serverVM = vms.stream()
.filter(vm -> name.equals(vm.displayName()))
.findAny()
.orElse(null);
System.out.println("Test server id : " + serverVM.id());
return serverVM;
}
Этого достаточно или мне нужно загрузить агента? Я спрашиваю об этом, потому что, хотя программа показывает, что Junit тестовый класс прилагается успешно, я вижу идентификатор процесса для JUnit, как это (запустив JCMD
команду) -
3585 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner -version 3 -port 55632 -testLoaderClass org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader -loaderpluginname org.eclipse.jdt.junit4.runtime -classNames JunitRnD.J
Спасибо за ваше предложение. Причина в том, что тестовые случаи в значительной степени зависят от настройки среды, для каждого теста я не хочу тратить время на настройку и настройку, скорее сосредоточившись на проблеме, решаемой модульными тестами. – Sam
Добавьте несколько обновлений для вас! – GhostCat
Может быть, мне не нужно говорить «единичный тест», а просто тест. И причина того, что тест сильно зависит от настройки среды, объясняется природой приложения, что он полагается на несколько разных компонентов. Допустим, у приложения есть проблемы в производстве, чтобы решить эту проблему, создать такую же среду на моей локальной или сцене, и теперь хочу выполнить мои тесты, чтобы увидеть, что происходит. Для этого мне просто нужно настроить среду один раз. Надеюсь, это прояснит мою потребность. – Sam