にLayoutParamsの方法をからかったときに期待される出力を取得することができません、私は方法があります。Mockito /パワーMockito:アンドロイド
public class MarginConverter {
int top = 0;
int bottom = 0;
int right = 0;
int left = 0;
public MarginConverter(String val){
top = bottom = right = left = Integer.parseInt(val);
}
public LayoutParams getLayoutParamsFromView(View view){
LayoutParams layoutParams = (LayoutParams) view.getLayoutParams();
int height, width;
if (layoutParams == null) {
height = LayoutParams.WRAP_CONTENT;
width = LayoutParams.MATCH_PARENT;
layoutParams = new LayoutParams(width, height);
layoutParams.setMargins(left, top, right, bottom);
} else {
layoutParams.setMargins(left, top, right, bottom);
}
return layoutParams;
}
}
注:左の変数、上、右、下には、コンストラクタ呼び出しで初期化されたインスタンス変数ですが。
このメソッドをテストします。私はview.getLayoutParams()メソッドを嘲笑している。メソッドsetMargin(int、int、int、int)は前述のようにマージンパラメータを設定していないので、コード内で正しく動作していますが、LayoutParams(leftMargin、rightMargin、topMargin、bottomMargin)のすべてのパラメータが0.0になっています。私は期待どおりの価値を得るために何をすべきですか?
私を助けてください!すべてのヘルプは..理解されるであろう
これは私のテストケースのコードです:あなたはモックの概念について混乱しているようだ
@RunWith(PowerMockRunner.class)
@PrepareForTest({ViewGroup.LayoutParams.class})
public class MarginConverterTest {
@Mock
private View view = mock(TextView.class);
private int left = 0;
private int right = 0;
private int top = 0;
private int bottom = 0;
@Before
public void setUp() throws Exception {
when(view.getLayoutParams()).thenReturn(null);
}
/**
* tests output for margin conversion when one argument is given
*/
@Test
public void test_OneArgumentMarginConversion(){
left =top = right = bottom = 5;
MarginConverter marginConverter = new marginConverter("5");
LayoutParams params = marginConverter.getLayoutParamsFromView(view);
Object[] marginArray = new Object[4];
marginArray[0] = params.leftMargin;
marginArray[1] = params.topMargin;
marginArray[2] = params.rightMargin;
marginArray[3] = params.bottomMargin;
Assert.assertArrayEquals(new Object[]{left,top,right,bottom}, marginArray);
}
}
。あなたのソリューションは、コードの両方の分岐をテストするのに役立ちました。しかし、私の質問は変わりません。 setMarginsメソッドの呼び出し時にlayoutParamsのフィールドの値を設定できるようにするにはどうすればよいですか。 –
質問を編集してテストコードを表示してください。 –
テストメソッドで 'marginConverter.getLayoutParams(view)'を呼び出していますが、テストしたいメソッドが 'getLayoutParamsFromView'であり、そのメソッドがあなたのテストから呼び出されているのを見ていません。何か不足していますか?ビット&ピースで情報を提供しているようです。 –