3

我正在使用 Java 中的 Cucumber、Selenium 和 JUnit 开发测试自动化脚本。为了快速检测我的自定义代码的任何问题,我在某些地方放置System.out.println("success")System.err.println("failure")。问题是在 Eclipse 中都不能打印到控制台。尽管不一定使用这些工具,但我已经完成了数百次。我怀疑 Cucumber 或 JUnit 是罪魁祸首,但在一些谷歌查询后我找不到任何证实这一点的东西。

我确实看到了这个:

System.out.println 不在 Eclipse 控制台中打印任何内容

但这不是问题。我的控制台都没有显示我的 println()。

更新到目前为止我尝试过的内容:

  1. PrintStream out = System.out; System.setOut(out); System.out.println("hello");
  2. Eclipse 控制台不显示输出
  3. 显式抛出异常(导致控制台中没有堆栈跟踪)
4

2 回答 2

3

所以事实证明,我使用的 Eclipse 版本(Eclipse Oxygen)存在一个错误。通常,在 Eclipse 中运行代码时,代码作为 javaw.exe 而不是 java.exe 执行。这两者之间的区别仅在于 javaw.exe 不使用 CMD 控制台,而 java.exe 确实使用 CMD 控制台。通常 Eclipse 将使用 javaw 执行,因为它有自己的控制台,但是某些 Eclipse 版本(可能只是 Oxygen)存在一个已知错误,Eclipse 无法正确处理此问题,因此您需要使用 java 代替。去做这个:

转到运行 > 运行配置 > 确保在左侧选择了具有主要方法的所需类 > 在右侧选择 JRE > 在运行时 JRE 部分下单击备用 JRE > 在 Java 可执行文件下选择备用并在字段中键入“java” > 申请

在此处输入图像描述

于 2018-12-05T19:09:09.693 回答
0

它是否适用于 Eclipse 中不相关的项目,但不适用于您当前的项目?System.setOut()我假设您使用调用(和类似的 Err)来更改打印流的一些库代码。你可以尝试的是:

PrintStream out = System.out;
...
insert your library calls here
....
System.setOut(out);
System.out.println("Test out println");
于 2018-12-05T15:19:14.097 回答