1

Robolectric を使用して、Android アプリで単体テストを実行しています。問題は単純です。findViewById を使用してボタンを取得できますが、performClick()メソッドを呼び出すか、 Robolectric.clickOn()false を返します。

ただし、ボタンはアプリまたは Robotium 単体テストでテストされ、完全に機能します...

合格しないテストコードは次のとおりです。

@RunWith(RobolectricTestRunner.class)    
public class RegisterActivityTest {

private MainActivity mainActivity;
private LoginActivity loginActivity;

@Before
public void setUp(){
    mainActivity=new MainActivity();
    mainActivity.onCreate(null);
    mainActivity.setContentView(R.layout.main);
  }

@Test
public void testButton() throws Exception {
    Button buttonPayment=(Button)mainActivity.findViewById(R.id.btn_payment);
    assertNotNull(buttonPayment); // will pass test ( ---> the view is a button and exists ) 
    assertTrue(buttonPayment.performClick()); // raise AssertionError
    assertTrue(Robolectric.clickOn(buttonPayment)); // raise AssertionError as well
  }
}

みんなありがとう。

ポール

4

2 に答える 2

1

performClick() のドキュメントによると、ボタンに OnClickListener を割り当てた場合、メソッドは true を返します。

…そうですか。

于 2013-01-22T19:35:44.357 に答える
1

通常、メソッドsetContentView内で呼び出しますonCreatesetContentViewしたがって、メソッド内の への呼び出しsetUpは冗長であり、問​​題を引き起こしている可能性があります。

于 2013-01-22T19:44:10.990 に答える