Java 带有JUnit的Android图形API

Java 带有JUnit的Android图形API,java,android,junit,awt,bitmapfactory,Java,Android,Junit,Awt,Bitmapfactory,我目前正在做一个项目,使用感官输入(acc、mag和陀螺仪)来产生特定的结果。我们使用JUnit开发了一个测试平台,它将加载先前记录的包含传感器事件的样本,并将它们提供给我们的算法。该算法还需要使用提供的地图图像。使用bitmapFactory在设备中执行此操作相当简单 这个问题在JUnit测试中也是如此,因为位图工厂在本地JVM测试中是模拟的,而执行此操作所需的本机java包(AWT)在Android API中不可用 java.lang.RuntimeException: Method dec

我目前正在做一个项目,使用感官输入(acc、mag和陀螺仪)来产生特定的结果。我们使用JUnit开发了一个测试平台,它将加载先前记录的包含传感器事件的样本,并将它们提供给我们的算法。该算法还需要使用提供的地图图像。使用bitmapFactory在设备中执行此操作相当简单

这个问题在JUnit测试中也是如此,因为位图工厂在本地JVM测试中是模拟的,而执行此操作所需的本机java包(AWT)在Android API中不可用

java.lang.RuntimeException: Method decodeByteArray in android.graphics.BitmapFactory not mocked.
在这种情况下,检索图像信息的最佳方式是什么?我有一个字节[],设备和测试场景上的图像数据都准备好了:

protected abstract HashMap<Point2i, MapLabel> openImage(byte[] img, int height, int width);
受保护的抽象HashMap openImage(字节[]img,int-height,int-width);
Android in-device实现使用了类似以下内容:

@Override
protected HashMap<Point2i, MapLabel> getSchematic(byte[] imgFile) {
    Bitmap mapImage = BitmapFactory.decodeByteArray(imgFile, 0, imgFile.length);
    int x_dim = mapImage.getWidth();
    int y_dim = mapImage.getHeight();
    HashMap<Point2i, MapLabel> parsedMap = new HashMap<>();

    for(int x = 0; x < x_dim; x++) {
       ...
    }

    return parsedMap;
}
@覆盖
受保护的HashMap getSchematic(字节[]imgFile){
位图mapImage=BitmapFactory.decodeByteArray(imgFile,0,imgFile.length);
int x_dim=mapImage.getWidth();
int y_dim=mapImage.getHeight();
HashMap parsedMap=新HashMap();
对于(int x=0;x
对于测试实现,我不知道怎么做,因为我没有任何工具可以让我检查输入图像中像素的值

谢谢

一个字:

生物分子

Robolectric为单元测试剔除了Android API。
它的使用也非常简单。

不久前,我确实尝试过这种解决方案。问题是Robolectric BitmapFactory实现实际上并没有返回我提供的位图字节[]。相反,它返回一个固定的100*100位图,不管输入是什么。试试新版本。最近做了一次大检修。是的,我已经检查了最新的3.0版本,它仍然是一样的。无论如何谢谢你