1

私の問題は、実際にはヘッダーで定義されています。Junit、PowerMock、Mockito で単体テストを書いています。私はそのようなクラスを嘲笑しています、

class User{
       public final synchronized String enter(AbstractClass ac){
       //.....
       }
}

// In test function
User mockUser = PowerMockito.mock(User.class);
PowerMockito.when(mockUser.enter( Mockito.any(Class1ImplementsSameAbstract.class)))
            .thenReturn("Some Str 1");
PowerMockito.when(mockUser.enter( Mockito.any(Class2ImplementsSameAbstract.class)))
            .thenReturn("Some Str 2");

System.out.println(mockUser.enter(new Class1ImplementsSameAbstract()));
System.out.println(mockUser.enter(new Class2ImplementsSameAbstract()));

これら2つの「いつ」条件をどのように分離できますか? このテストを実行すると、両方の「System.out..」行に「Some Str 2」と出力されます。

4

1 に答える 1

4

マッチャーのany*ファミリは型チェックを行いません。isA(Class<T>)代わりに以下を使用する必要があります。

PowerMockito.when(mockUser.enter(Mockito.isA(Class1ImplementsSameAbstract.class)))
        .thenReturn("Some Str 1");

または、実際の引数を使用します。たとえば、次のようになります。

final Class1ImplementsSameAbstract klass1 = new Class1ImplementsSameAbstract();

PowerMockito.when(mockUser.enter(klass1)).thenReturn("Some Str 1");
于 2013-07-03T08:21:21.253 に答える