2015-05-27 87 views
0

我想寫一些代碼java robitum這將測試並檢查我的排序按鈕是否正常工作。Android Robotium排序測試儀

我這樣做是通過激活排序按鈕,然後遍歷排序的數組來檢查當前值與下一個值。 問題是說我比較字符串,如「租賃8 &租賃12」,在那裏,然後告訴我,租賃8>租約12

我知道這是因爲軟件的各種基於ASCII發生,但我想知道如何解決這個問題。我的代碼如下:

 solo.clickLongOnView(tenancy_sort); 

    for(int i = 0; i<9; i++) 
    { 
     TextView tenancy_current = (TextView) 
       solo.getView(R.id.device_selector_row_tenancy_text,i); 
     TextView tenancy_next = (TextView) 
       solo.getView(R.id.device_selector_row_tenancy_text,i+1); 

     String tenancy_current_text = tenancy_current.getText().toString(); 
     String tenancy_next_text = tenancy_next.getText().toString(); 

     int result = tenancy_current_text.compareTo(tenancy_next_text); 
     assertTrue(result <= 0); 
    } 

他們這樣,我在實際應用中的數組排序是通過使用包含了自然排序的算法的自定義排序類。 謝謝提前尋求幫助,請問。

回答

1

你是否總是知道文本將在應用程序中?如果是這樣的話,最簡單的答案就是在每個位置對文本進行硬編碼檢查,這可能是最簡單的方法,並提供了高度的保證。

如果你不知道文本並且需要在飛行中找出它,你將不得不建立一個你已經嘗試過的oracle。下面是一個問題,你是否試圖驗證「排序」按鈕是按照比較器對列表進行排序,還是試圖測試比較器是否正確?如果你確定你的比較器是正確的,那麼通過其他測試驗證排序的工作是相當簡單的,就像你所做的那樣循環遍歷文本視圖並存儲值(可能在List中),並檢查它們是否與相同列表匹配按照您的比較器進行排序,因此證明它們按照您的比較器進行排序。

但有一點需要注意的是,如果您無法控制列表中的值,它們可能已經是偶然的,因此您的測試可能會給出誤報,您可以檢查是否您希望通過在按下排序按鈕之前獲取值並按照上述方法進行相同的比較。

+0

感謝您的快速回答!我最終編寫了預期結果的硬編碼,並將排序後的數組與之進行比較。你提出了一個關於我試圖通過這個測試達到什麼的好點。事實上,我只是在測試,看看列表是否正確排序;因爲我已經知道我的比較器工作正常。 – Will