簡體   English   中英

EV打印使INET / OmNET ++中的單元測試失敗

[英]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_INFOEV_DETAIL和所有其他EVEV_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM