1

我做了一个 Robotium 单元测试课程。在我的应用程序中,我有一个按钮。此按钮会根据代码中的某些结果更改背景颜色。我的问题是我如何断言按钮的颜色我尝试这样的事情

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

但这向我显示了一个负数。我怎样才能获得更合适的东西?谢谢

4

1 回答 1

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();
    }
}

i ”是您提到的“取决于代码中的某些结果”。

于 2012-08-30T05:58:12.700 回答