使用参数进行mockito测试

时间:2018-04-20 11:45:55

标签: android mockito

public void setDeviceColor(int deviceColor) {
    if (deviceColor == 0) {
        deviceColor = ColorUtil.getColorFromConte(mContext,R.color.color_1);
    }
    mDeviceColor = deviceColor;
    notifyPropertyChanged(BR.deviceColor);
}

如何在mockito中测试。我无法做到

1 个答案:

答案 0 :(得分:0)

如果你想测试一个有参数的方法,那么你只需要调用那个方法&然后验证状态&您的方法可能更改的类的值。 例如:对于名为TestClass的类,您的情况看起来像

@Mock
TestClass mockedTestclass;

@Test
public void testDeviceColor(){
int someDeviceColor = 123;
//invoke
mockedTestclass.setDeviceColor(someDeviceColor);
verify(mockedTestclass).notifyPropertyChanged(BR.deviceColor);
........
//other verifications
}

如果要测试具有带参数的构造函数的类,则可以使用JUnit轻松完成。为此,您必须使用Parameterized.class运行器运行,并使用@Paramters注释在公共静态方法中提及参数。 一个粗略的例子是:

     @RunWith(Parameterized.class)
     class SomeTestClass{

        @Mock
        SomeTestClass mSomeTestClassInstance;

        @Parameters
        public static Object provideParameters() {
            Object[] objects =   new Object[]{
                    0,
                    0,
                    2
            };
          return objects;
        }
        public SomeTestClass(Object argument1){
        mArgument1 = argument1; 
        }

        @Test
        public void testSomeMethod{
         Object returnValue = mSomeTestClassInstance.testSomeMethod(mArgument1);
         assertequals(mArgument1,returnValue)
        }
    }