2011-11-07 207 views
1

我制作了Robotium单元测试课程。 在我的应用程序中,我有一个按钮。该按钮根据代码中的某些结果改变背景颜色。 我的问题是我怎么能断言按钮 的颜色我尝试这样的事情使用Robotium进行Android单元测试

assertEquals("", scStatusButton.getPaint().getColor()); 

但是,这显示了我一个否定大数目。 我如何获得更适合的东西? 谢谢

回答

0

首先,你不能通过使用getPaint()方法获得按钮背景颜色。 getPaint().getColor()将为您提供按钮的文本颜色为int值。 有一个负谷值作为代码的答案是非常正常的;

int i = colorButton.getPaint().getColor(); 

以下是与Robotium断言按钮的在单元测试的颜色的方式。

package com.anuja.bu.test; 

import android.graphics.drawable.ColorDrawable; 
import android.test.ActivityInstrumentationTestCase2; 
import android.widget.Button; 

import com.anuja.bu.BuHomeActivity; 
import com.anuja.bu.R; 
import com.jayway.android.robotium.solo.Solo; 

public class TestBuHomeActivity extends ActivityInstrumentationTestCase2<BuHomeActivity> { 

    private Solo solo; 

    public TestBuHomeActivity() { 
     super("com.anuja.bu", BuHomeActivity.class);   
    } 

    @Override 
    protected void setUp() throws Exception { 
     super.setUp(); 

     solo = new Solo(getInstrumentation(), getActivity()); 
    } 

    public void testButtonColor(){ 

     int i = 1; 

     Button colorTestButton = (Button) solo.getView(R.id.buHomeActivity_color_button); 

     solo.clickOnButton("Color"); 

     ColorDrawable colorDrawable = (ColorDrawable) colorTestButton.getBackground(); 
     int buttonColorValue = colorDrawable.getColor(); 

     if(i == 0){ 
      assertTrue(buttonColorValue == -65536); // Red 
     }else{ 
      assertTrue(buttonColorValue == -16711936); // Green 
     } 
    } 

    @Override 
    protected void tearDown() throws Exception { 

     solo.finishOpenedActivities(); 
    } 
} 

”是你“这取决于在代码一些成果”提到的东西。