使用 Robolectric + Roboguice 时,日志输出写入何处?

2022-08-31 21:28:13

我正在使用Robolectric来测试Android。我正在通过 maven 运行我的测试,例如

mvn -Dtest=LogTest test

如果我有写入日志的代码,例如

Log.d("TAG", "blah");

或使用机器人的Ln

Ln.d("blah");

我在 maven 的 surefire 日志(文本文件)中看不到任何输出。

理想情况下,我实际上希望将简单的日志语句转到控制台。我可以使用 写入控制台,但当然我宁愿使用受支持的日志记录 API。System.out.println("blah")

所以我的问题是,为什么我根本看不到日志输出,以及如何将日志消息写入控制台?


答案 1

我正在运行robolectric-2.0-alpha-3

对我有用的是在我的测试的setUp方法中将流设置为stdout

像这样:

@Before
public void setUp() throws Exception {
  ShadowLog.stream = System.out;
  //you other setup here
}

对于这个版本的robolectric,我在自定义的TestRunner或我的TestLifeycleApplication中做了同样的事情()没有成功。ShadowLog.stream = System.out

设置系统属性也不起作用,但它可能适用于以前的版本。System.setProperty("robolectric.logging","stdout");


答案 2

我使用机器人 2.3.如何为我工作:

进入我的@Before:

ShadowLog.stream = System.out;

在我的测试函数中,我可以使用(ShadowLog.还有其他选项):

ShadowLog.v("tag", "message");

在我测试的类中,我可以用以下信息在日志中放置一些消息:

System.out.println("message");

推荐