저는 회사의 Android 앱 중 하나에 대한 단위 테스트를 작성하고 있습니다. 일부 테스트에서는 Logcat 출력에 특정 행이 있는지 여부를 확인하기 때문에 각 테스트를 실행하기 전에 로그를 지우고 싶습니다.Logcat 로그를 지우는 좋은 방법은 무엇입니까?
기본 명령은 logcat -c
입니다. 이 프로세스는 순간적이지 않고 몇 초가 걸리지 만 별도의 스레드에서 발생하기 때문에 테스트 사례의 다음 명령이 즉시 실행되어 잘못된 결과를 반환 할 수 있습니다. 한 가지 해결 방법은 강제 대기를 추가하는 것입니다. 그래서 내 기본 코드는 다음과 같습니다 :
private void clearLogs() throws Exception {
Runtime.getRuntime().exec("logcat -c");
Thread.sleep(2000);
}
이것은 지금까지 문제없이 작동했습니다. 그러나 관리자는 로그 지우기가 임의의 시간이 걸리는 경우를 처리 할 수 있기를 원합니다. 예를 들어, 로그 지우기에 20 초가 걸리는 가상의 상황이 있다고 가정합니다. 이 일을 어떻게 하죠?
NOW=$(date +"%m-%d %H:%M:%S.000") ; adb logcat -T "$NOW"
이 일반적으로 모두 loogs을 취소 할 필요성을 제거하는 것입니다 :
나는 특정 타임 스탬프 이후에 기록 된 항목 만 얻을 수있는 필터를 만드는 작업이 포함 해결책을 발견했다. 그러나 Logcat이 나에게 "잘못된 옵션 - T"오류를 주므로 저에게 맞지 않습니다.누구나 해결책이 있습니까? 대신 잠에서 임의의 값의
logcat 출력에 의존하는 것은 단위 테스트를 작성하는 좋은 방법이 아닙니다. '로그'(예 : '목재') 주변에 래퍼가 있고 그와의 상호 작용을 확인하는 것이 더 나은 접근 방법처럼 보입니다. – Emmanuel