ログが意図したとおりに機能しているかどうかを確認するために、いくつかのユニットテストを書いています。例えば、ここでテストされている方法の一つである:Androidユニットのテスト - 「logcat -c」は、ログよりも頻繁にログを消去しています
// from my SampleObject class
public void configure(Context context) {
Log.d(TAG, "Configuration done.");
}
私は前のテストからのログがピックアップされないように、各テストの前にLogCatをフラッシュします。
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()
をコメントアウトすると、テストが機能します。誰でも私が間違っていることを考えている?