私のアンドロイドアプリスロージェンキンのjunitテストを実行しています。テストが失敗した場合は、私のテストが失敗した理由を理解するのに役立たないスタックトレースしか見ることができません。自分のコードにいくつかのログを追加して、ローカルマシンでテストをデバッグできるようにしましたが、Jenkinsのコンソール出力でそれらのログを見たいので、テストが失敗したときに何がうまくいかなかったのか分かります。jenkinsのコンソールログにテストログが表示されるのはどうすればいいですか?
0
A
答えて
0
これは古い質問ですが、私は解決策を見つけました。 Log
クラスをカスタムクラス(Logger
)にラップします。 LOG_LINES
CopyOnWriteArrayListと とLogLine
ログデータの保持者で
private static void log(LOG logLevel, Object message) {
LOG_LINES.add(new LogLine(logLevel, tag, content));
switch (logLevel) {
case ERROR:
Log.e(tag, content);
break;
case WARNING:
Log.w(tag, content);
break;
case INFO:
Log.i(tag, content);
break;
case DEBUG:
Log.d(tag, content);
break;
case VERBOSE:
Log.v(tag, content);
break;
}
}
:その後のようなルックスをログ
public static void d(String tag, String message) {
log(LOG.DEBUG, tag, message);
}
:
その後、私のようなログメソッドをラップします。
最後に、カスタムテストRunner
を使用して、Jenkins(HTMLレポート内)にログが表示されます。私は簡単な方法でそれを説明しようとする私のコードを適応するので、それが動作を期待
public class MyLoggingTestRunner extends BlockJUnit4ClassRunner {
public MyLoggingTestRunner(Class<?> klass) throws InitializationError {
super(klass);
}
@Override
protected void runChild(final FrameworkMethod method, RunNotifier notifier) {
//override to override errors with logs
Description description = describeChild(method);
if (method.getAnnotation(Ignore.class) != null) {
notifier.fireTestIgnored(description);
} else {
run(methodBlock(method), description, notifier);
}
}
protected void run(Statement statement, Description description, RunNotifier notifier) {
EachTestNotifier eachNotifier = new EachTestNotifier(notifier, description);
eachNotifier.fireTestStarted();
try {
statement.evaluate();
} catch (AssumptionViolatedException e) {
eachNotifier.addFailedAssumption(e);
} catch (Throwable e) {
String throwableMessage = e.getMessage();
String message = "\nLast logs :\n" + logsToString() + "\n\nStackTrace :\n" + e.getClass() + (TextUtils.isEmpty(throwableMessage) ? "" : ":" + throwableMessage);
try {
Field detailMessage = Throwable.class.getDeclaredField("detailMessage");
detailMessage.setAccessible(true);
detailMessage.set(e, message);
} catch (Exception e1) {
}
eachNotifier.addFailure(e);
} finally {
eachNotifier.fireTestFinished();
}
}
private static String logsToString() {
List<LogLine> logs = Logger.getLogs();
StringBuilder logBuilder = new StringBuilder();
String sep = "";
for (LogLine logLine : logs) {
logBuilder.append(sep).append(logLine.toString());
sep = "\n";
}
return logBuilder.toString();
}
}
:単純にテスト・クラスに注釈@RunWith(MyLoggingTestRunner.class)
を追加します。
関連する問題
- 1. jenkinsコンソールログのアプリケーションログを表示
- 2. アンドロイドエミュレータのキーボードが表示されないようにするにはどうすればいいですか
- 3. JavaScriptのプロンプトが表示されないようにするにはどうすればいいですか?
- 4. appceleratorのチタンスタジオに、コンソールログにキャッチされていないランタイムエラーを表示するにはどうすればいいですか?
- 5. テストログ出力が表示されないサービス
- 6. アンドロイド1.6にソフトキーボードが表示されないようにするにはどうすればいいですか?
- 7. 複数のLightFaceが表示されないようにするにはどうすればよいですか?
- 8. ファイルの場所が表示されないようにするにはどうすればよいですか?
- 9. デフォルトのCallOutViewが表示されないようにするにはどうすればよいですか?
- 10. ソフトキーボードが表示されないようにするにはどうすればいいですか?
- 11. サーバファイルがオンラインで表示されないようにするにはどうすればよいですか?
- 12. Javaでボタンサラウンドが表示されないようにするにはどうすればよいですか?
- 13. ナビゲーションバーの下に表示されるマスターページメニューコンテンツを表示するにはどうすればよいですか?
- 14. Jenkins Pipelineプラグインの場合、名前付きパラレルステップを表示するにはどうすればいいですか
- 15. Javaコンソールログを確認するにはどうすればよいですか?
- 16. キーボードが表示されたときにナビゲーションバーが表示されないようにするにはどうすればいいですか?
- 17. jabber.elにユーザーアイコンが表示されないようにするにはどうすればよいですか?
- 18. QApplicationがドックに表示されないようにするにはどうすればよいですか?
- 19. 「インクルードファイル」がユーザーに表示されないようにするにはどうすればよいですか?
- 20. Powershell:エラーがスクリプトに表示されないようにするにはどうすればよいですか?
- 21. サブディレクトリ名がURLに表示されないようにするにはどうすればよいですか?
- 22. スクロールバーがdataTableに表示されないようにするにはどうすればよいですか?
- 23. 実行タイムアウトエラーメッセージが表示されないようにするにはどうすればよいですか?
- 24. 隠しシステムファイルが表示されないようにするにはどうすればよいですか?
- 25. デバッグメッセージが表示されないようにするにはどうすればよいですか?
- 26. .txtファイルが直接表示されないようにするにはどうすればよいですか?
- 27. マスターマシンで分散テストログのすべてのステップを取得するにはどうすればよいですか?
- 28. Googleのウェブフォントがいつ表示され、ページに表示されるのかを検出するにはどうすればよいですか?
- 29. Visual Studioのコードが表示されないコンソールログ
- 30. ブラウザでPHPエラーが表示されるようにするにはどうすればよいですか?
ローカル環境でテストを実行するとログが表示されますか(IDEコンソールまたは端末) –
はい。私はアンドロイドスタジオのAndroidモニターコンソールで見ることができます。 – Benjo
問題が何であるかは分かりませんが、回避策としてログファイルにログを出力してから、このファイルを "cat/type"するだけです。 –