我做了一个 Robotium 单元测试课程。在我的应用程序中,我有一个按钮。此按钮会根据代码中的某些结果更改背景颜色。我的问题是我如何断言按钮的颜色我尝试这样的事情
assertEquals("", scStatusButton.getPaint().getColor());
但这向我显示了一个负数。我怎样才能获得更合适的东西?谢谢
我做了一个 Robotium 单元测试课程。在我的应用程序中,我有一个按钮。此按钮会根据代码中的某些结果更改背景颜色。我的问题是我如何断言按钮的颜色我尝试这样的事情
assertEquals("", scStatusButton.getPaint().getColor());
但这向我显示了一个负数。我怎样才能获得更合适的东西?谢谢
首先,您无法通过使用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 ”是您提到的“取决于代码中的某些结果”。