以下の例に似たC++コードがあります。 mFlashLamp.triggerがちょうど5回呼び出されたことを確認するための単体テストを作成したいと思います。 しかし、今まで私はこれを行う良い方法を理解することができませんでした。ユニット変数のインスタンス関数の呼び出しをテストします
は、私は、次の制約があります:ミスラ/ GoogleTest/GoogleMock
include <iostream>
class FlashLamp
{
public:
virtual void trigger(){
std::cout << "Trigger FlashLamp" << std::endl;
}
};
class Spectrometer
{
public:
FlashLamp mFlashLamp;
void foo(){
for(int i=0; i<5; i++){
mFlashLamp.trigger();
}
}
};
int main(){
Spectrometer S;
S.foo();
return 0;
}
へ コンプライアンスは誰もがユニットテストのために良いときれいな解決策を持っています。私は考えることができる 一つの解決策は、
class Spectrometer
{
public:
FlashLamp mFlashLamp;
FlashLamp* pFlashLamp;
}
にあるインスタンス変数への追加のポインタを持っており、トリガーにアクセスするためにこれを使用します。しかし、これは、すべての逆参照に対してヌルポインタチェックを必要とするため、一部のコードが肥大化することを意味します。 誰かがより良い解決策を考えていますか?
PS: 私は本当にいいタイトルを考え出しましたが、できませんでした。誰かが改善している場合は、自由に編集してください。
それはあなたが実際にテストしたいものを、少し不明です。 'spectrometer'クラスから' trigger() 'を何度も呼び出したいのですか? – user0042