2016-08-10 117 views
3

我已經實現了Daniele Bottilo的可繪製匹配器his medium post濃縮咖啡測試ImageView包含可繪製

現在我想用它來測試我的圖像視圖不是空的。我嘗試這樣做:

onView(withId(R.id.image)) 
     .check(matches(not(noDrawable()))); 

它不工作時,IDE警告我

沒有(... guava.base.Predicate)在謂詞不能適用於(org.hamcrest。 Matcher)

我是新來的Espresso,並沒有成功地谷歌答案。在我應該使用的另一個軟件包中是否有'Not',或者我在這裏做錯了什麼?

回答

6

我已經在媒體上回復過你,但我也會在這裏發表我的回覆;在EspressoTestsMatchers我想補充:

public static Matcher<View> hasDrawable() { 
    return new DrawableMatcher(DrawableMatcher.ANY); 
} 

而且在DrawableMatcher你可以做這樣的事情:

static final int EMPTY = -1; 
static final int ANY = -2; 

@Override 
protected boolean matchesSafely(View target) { 
    ... 
    ImageView imageView = (ImageView) target; 
    if (expectedId == EMPTY){ 
     return imageView.getDrawable() == null; 
    } 
    if (expectedId == ANY){ 
     return imageView.getDrawable() != null; 
    } 
    ... 
} 

其實我覺得我應該更新我的職位與你的要求! hasDrawable()匹配器可以是有用的:)

+0

很好的答案和帖子,非常感謝! – RobertoAllende