[英]EV printing makes unit test fail in INET/OmNET++
我有一個要測試的組件:
namespace myproj {
class MyComp {
public:
void doSome();
};
}
using namespace myproj;
void MyComp::doSome() {
// Some code...
// And in the end, for debugging purposes, I print in one of the streams
EV_DEBUG << "Some debugging info" << endl;
}
我的測試是使用opp_test
工具的普通OmNET ++單元測試 :
%description:
Tests my component
%includes:
#include "myproj/MyComp.h"
%global:
using namespace ::inet::test::myproj;
%activity:
MyCompTest test = MyCompTest();
test.testDoSome();
EV << ".\n";
%contains: stdout
my test out
當然,類MyCompTest
使用MyComp
來運行一些邏輯,這些邏輯最終將調用MyComp::doSome
。
請注意, testDoSome
將導致打印字符串“ my test out”。
問題在於,由於在我的原始類(源/模擬代碼)中存在該EV_DEBUG
(如果將其更改為EV_INFO
, EV_DETAIL
和所有其他EV
, EV_DETAIL
發生同樣的情況),因此測試輸出中毒了,最終輸出為:
Some debugging info
my test out
這使測試失敗。 如果我注釋掉EV_DEBUG << ...
那么測試很好。
如何解決這個問題呢? 我真的必須刪除原始代碼中的所有EV
打印輸出嗎?
您可以通過在%activity
部分中添加以下行來關閉EV_DEBUG
的打印功能:
#undef EV_DEBUG
#define EV_DEBUG true ? EV : EV
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.