【问题标题】:Where does LogCat's Log.x() output go when running Android JUnit tests?运行 Android JUnit 测试时,LogCat 的 Log.x() 输出在哪里?
【发布时间】:2011-05-12 18:15:59
【问题描述】:

我注意到,当通过派生自 TestCaseAndroidTestCase 的测试类测试纯 Java 类时,LogCat 输出消失了。

是否仍然可以捕获这些消息的输出?还是我唯一的办法是使用更慢的ActivityInstrumentationTestCase2<> 作为基类?

【问题讨论】:

    标签: android junit logcat android-logcat


    【解决方案1】:

    我有类似的问题...这里的重点是,在 Android Junit 模式下运行项目时,Eclipse 中可用的 logcat 视图不显示任何内容。至少,在我使用的 Android 2.1 中,是这样的行为。

    您可以通过从命令行(终端窗口)检查 logcat 来解决此问题:

    # check the device name you are using
    # It gives something like this:
    $ ./adb devices
    List of devices attached 
    emulator-5554   device
    
    # open logcat of the device
    $ ./adb -s emulator-5554 logcat
    D/AndroidRuntime(  943): 
    D/AndroidRuntime(  943): >>>>>> AndroidRuntime START com.android.internal.os.RuntimeInit <<<<<<
    D/AndroidRuntime(  943): CheckJNI is ON
    .
    .
    .
    

    【讨论】:

      【解决方案2】:

      这两个语句都会在 logcat 中生成日志:

          android.util.Log.d(TAG, "This is Log.d");
          System.out.println("This is System.out.println");
      

      【讨论】:

      • 是的,我知道,但这不是我问的。我的问题是我希望在运行 JUnit 时看到相同的 LogCat 输出。
      • 我就是这个意思。这就是您从测试中记录的方式。您使用的是 android 测试运行器还是其他东西?我猜这可能是你的问题。
      【解决方案3】:

      仅适用于使用 Android Studio 的任何人。您可以打开 Android DDMS 工具窗口 (Cmd + 6) 并使用右上角的下拉框关闭任何过滤器。它似乎使用app:com.your.package.name 作为默认值,它过滤测试输出。

      【讨论】:

        【解决方案4】:

        简单地使用Log.v("MyIdentifier","MyMessage") 语句似乎为我记录了所有内容,包括单元测试类本身和我正在测试的 Android 应用程序。

        此信息可能对第一次使用 Android jUnit 的人有所帮助:

        只有在测试类中调用getActivity() 时,Android jUnit 测试才会真正启动一个活动。如果未调用 get Activity,您将看不到您编写的任何日志记录调用的结果,例如 onCreateonResume。不过,当 Android Manifest 中标记为“Main”和“Launcher”的 Activity 正在测试中时,这条规则似乎有一个例外。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-12-20
          • 2023-03-09
          • 1970-01-01
          • 1970-01-01
          • 2013-06-07
          • 2011-03-22
          • 1970-01-01
          • 2016-02-15
          相关资源
          最近更新 更多