java - 在 android 中测试 Color 类没有按预期工作

标签 java android android-studio junit gradle

我正在尝试为我的 android 应用程序中的 java 类编写测试用例,但它似乎没有按预期工作。

这是我的测试用例:

public void testGetColor() throws Exception {
    ShadesColor color = new ShadesColor(100, 200, 250);
    Assert.assertEquals(Color.rgb(100, 200, 250), color.getColor());

    Assert.assertEquals(100, color.getRed());
    Assert.assertEquals(200, color.getGreen());
    Assert.assertEquals(250, color.getBlue());
}

以下是 ShadesColor 类。

public class ShadesColor {

    int color;

    public ShadesColor(int red, int green, int blue)
    {
        color = Color.rgb(red, green, blue);
    }

    public int getColor(){
        return color;
    }

    public ShadesColor interpolate(ShadesColor endColor, double percentage){
        int red = (int)(this.getRed() + (endColor.getRed() - this.getRed()) * percentage);
        int green = (int)(this.getGreen() + (endColor.getGreen() - this.getGreen()) * percentage);
        int blue = (int)(this.getBlue() + (endColor.getBlue() - this.getBlue()) * percentage);
        return new ShadesColor(red, green, blue);
    }

    public int getRed(){
        return Color.red(color);
    }

    public int getGreen(){
        return Color.green(color);
    }

    public int getBlue(){
        return Color.blue(color);
    }
}

调用 ShadesColor 构造函数时,颜色整数值始终为 0。由于默认情况下未模拟 Android.Color,因此我在 build.gradle 文件中添加了以下行

testOptions {
    unitTests.returnDefaultValues = true
}

我错过了什么吗?

最佳答案

我认为您正在进行本地单元测试,而不是 android 仪器测试。本地单元测试没有真正的 Color 类,这就是您添加 unitTests.returnDefaultValues = true 的原因,这使得构造函数中的 Color.rgb(red, green, blue) 返回零。

模拟颜色类或使用其他类。谢谢。

关于java - 在 android 中测试 Color 类没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31177363/

相关文章:

Android:隐藏/显示表格行

android - 如何使用android Wear DataApi发送相同的数据两次?

java - 表达式的非法开始(Android)

java - 如何使用jsoup在android中发送POST?

android - Android 中的 iOS Background Fetch 等效项

java - 尝试等待所有线程完成

android - 如何通过 Gradle 将 Fresco 源代码添加到另一个项目中

android - 包与同名的现有包冲突

java - JIBX 绑定(bind)目录引发意外的访问绑定(bind)错误

java - 使用 codenameone 制作一个将图像上传到服务器的应用程序