2015-03-13 61 views
3

我使用Xamarin.UITest框架來斷言,如果某些按鈕被禁用或啓用。 不幸的是,這似乎不起作用如果按鈕的「啓用」屬性是設置通過綁定槽MVX(綁定正在工作 - 按鈕是真正禁用)。使用Xamarin.UITest與MvvmCross綁定

例axml有兩個按鈕:

<xxx.Widgets.Button 
     android:id="@+id/btnSave" 
     android:layout_width="200dp" 
     android:layout_height="wrap_content" 
     android:text="Save" 
     style="@style/DefaultButton" 
     local:MvxBind="Click SaveAndContinueCommand; Enabled SaveButtonActive" /> 
    <xxx.Widgets.Button 
     android:id="@+id/btnTest" 
     android:layout_width="200dp" 
     android:layout_height="wrap_content" 
     android:text="Test" 
     style="@style/DefaultButton" 
     android:enabled="false" /> 

查詢與Xamarin.UITest:

var button = App.Query(v => v.Button("Save")).FirstOrDefault(); 
Assert.IsFalse(button.Enabled); // -> Button is always enabled 

var testButton = App.Query(v => v.Button("Test")).FirstOrDefault(); 
Assert.IsFalse(button.Enabled); // -> Button is disabled. Correct! 

我需要注意的東西有什麼不同? 有沒有人使用過MVX和Xamarin.UITest的組合?

回答

0

我通常不會檢查UI測試級別的按鈕屬性。我會在覈心測試中檢查我知道的工作。據說,你可以通過UI測試來點擊按鈕,並確認沒有任何事情發生,如果可能的話。

我想嘗試的下一件事情是啓用葫蘆啓動您的應用程序,導航到此屏幕並查詢按鈕以驗證您正在檢查您應該是的屬性。

+0

日本我可以在點擊按鈕後檢查屏幕。 但Xamarin公開了諸如視圖元素的「isEnabled」屬性 - 顯然這不適用於綁定屬性(我需要檢查它與有界文本道具)。 提供的REPL shell只知道「樹」命令,該命令返回屏幕上的所有視圖元素,但沒有它們的屬性。通過c#代碼查詢所有元素會返回我提到的狀態 - isEnabled Prop是錯誤的。 有沒有一種方法可以通過將AppQuery結果轉換爲Android按鈕或使用內置方法來直接讀取特定屬性? – 2015-03-16 08:06:46

+0

如果以編程方式將按鈕的IsEnabled屬性更改爲true後會發生什麼情況,它會在屏幕上顯示爲false?我很好奇它是否仍然在Xamarin UI測試中返回false屬性......我很難相信這是一個MvvmCross數據綁定問題,並認爲這只是一個問題,也許Xamarin UI測試始終返回原始創建按鈕上的狀態? – PkL728 2015-03-16 11:32:20

+0

這種情況下工作。我添加了一個修改按鈕的啓用屬性的事件 - Xamarin UI Test提供了正確的屬性值。也許我可以用測試綁定來測試這種行爲。它真的很奇怪 – 2015-03-18 09:34:32