System.console () возвращает null в командной строке во время теста mvn - PullRequest
0 голосов
/ 10 февраля 2019

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

public class Demo {
 Demo() {
  Console console = System.console();
  if (console == null) {
   System.err.println("Console not found");
  } else {
  console.writer().println("No issue with console");
  }
 }
 public static void main(String[] args) {
  new Demo();
 }
}

Тестовый класс

public class DemoTest {
 private Demo demo;
 @BeforeClass
 public void init() {
  demo = new Demo();
 }
}

Когда я запускаю mvn test, он, конечно, запускал его после этапов очистки и компиляции, но он говорит Console not found затем NullPointerException

Когда я запускаю класс Demo из CLI, он работает.Например, когда я говорю java Demo, он печатает No issue with console

Я использую Java1.8 & Testng версия

<dependency>
  <groupId>org.testng</groupId>
  <artifactId>testng</artifactId>
  <version>6.14.3</version>
  <scope>test</scope>
</dependency>

1 Ответ

0 голосов
/ 11 февраля 2019

Цитирование javadocs из здесь

Наличие консоли виртуальной машины зависит от базовой платформы, а также от способа вызова виртуальной машины.Если виртуальная машина запускается из интерактивной командной строки без перенаправления стандартных потоков ввода и вывода, тогда ее консоль будет существовать и обычно будет подключаться к клавиатуре и дисплею, с которого была запущена виртуальная машина.Если виртуальная машина запускается автоматически, например, с помощью планировщика фоновых заданий, то у нее обычно не будет консоли.

Когда вы запускаете код с помощью метода main(), вы вращаетеот JVM.Но AFAIK, это не то же самое, когда вы раскручиваете тесты через maven или из IDE в этом отношении.

Это объясняет, почему вы видите нулевое значение.

Вот связанный поток, которыйдобавляет больше контекста: https://coderanch.com/t/641563/java/System-console-returns-null

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