2017-12-14 15 views
0

私は、内部関数のいくつかのテストを必要とするクラスを持っています。内部関数を公開する設計パターン(外部テストのため)

これらのテストは、システム検証のみを目的とする外部エンティティでのみ使用する必要があるため、クラスの一部として埋め込むことは望ましくありません。

私の解決方法は、内部関数protectedを宣言し、外部使用のためにそれらを公開するクラスを追加するという形です。ここで

は非常に単純な(擬似コード)の例である:

class public MyClass { 

    protected int add(int val1, int val2) { 
     return val1 + val2; 
    } 

    protected int mul(int val1, int val2) { 
     return val1 * val2; 
    } 
} 

class MyClassExposurer : public MyClass { 

    public int addTest(int val1, int val2) { 
     return super.add(val1, val2); 
    } 

    public int mulTest(int val1, int val2) { 
     return super.mul(val1, val2); 
    } 
} 

は、このデザインパターンのための既知の専門用語はありますか?

ありがとうございます。

+0

プライベートメソッドまたは保護されたメソッドのテストには何の意味もありません。パブリックメソッドをテストするときに自動的にテストされるためです。 –

+1

@RickSanchez:もし問題があれば、問題点を特定したいからです。この問題は、外部関数を実行すると「隠れている」可能性があります。 – goodvibration

+0

リフレクションを使用できます。 –

答えて

0

あなたは、あなたが使う「デザインパターン」の名前を探している:私はアダプタプロキシのミックスを言うでしょう。それはうまく動作し、そのまま残すことができます。もっと私を悩ます何

は、あなたのテストクラスは、プライベートメソッドにアクセスできるようにキーワードの友人を使用して検討している可能性がありながら、その溶液を用いて、あなただけの露出のレベルを変更するには、クラスをdupplicateするを余儀なくされていることですテストされたクラス(プライベート)のカプセル化の初期レベルを変更しないという追加の利点を直接持ちます。

関連する問題