로깅이 의도 한대로 작동하는지 확인하기 위해 단위 테스트를 작성했습니다. 예를 들어, 다음 방법 중 하나가 테스트되고 있습니다 :안드로이드 유닛 테스트 - "logcat -c"가 로그보다 더 자주 지우는 것임
// from my SampleObject class
public void configure(Context context) {
Log.d(TAG, "Configuration done.");
}
내가 이전 테스트에서 로그가 포착되지 않도록 각 시험 전에 로그 캣를 플러시합니다.
private void clearLogs() throws Exception {
Runtime.getRuntime().exec("logcat -c");
}
public void setUp() throws Exception {
super.setUp();
clearLogs();
SampleObject mSampleObject = new SampleObject();
}
그리고 여기 내 단위 테스트입니다 : :이를 위해, 나는 setUp()
에서 호출되는 clearLogs()
방법을 썼다
public void testConfigure() throws Exception {
String LOG_CONFIGURATION_DONE = "Configuration done.";
boolean stringFound = false;
mSampleObject.configure(new MockContext());
Process process = Runtime.getRuntime().exec("logcat -d SampleObject:D *:S");
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line = "";
while ((line = bufferedReader.readLine()) != null) {
if (line.contains(LOG_CONFIGURATION_DONE)) {
stringFound = true;
break;
}
}
assertTrue("Log message for configure() not found", stringFound);
}
문제는 로그 항목이 clearLogs()
만하더라도 취소되어 있다는 것입니다 setUp()
에서 전화했습니다. 내가 clearLogs()
을 주석으로 처리하면 테스트가 작동합니다. 누구나 내가 뭘 잘못하고 있는지 알 겠어?