对于Android UI类的单元测试,之前写的有些代码就是sleep 10秒,而后肉眼检查下。这样子在自动化测试中没有用。canvas
今天修改了下代码,其实肉眼检查也就是检查pixel的颜色,因此能够直接获取view的某个点的颜色,而后跟指望值比较就好了。单元测试
这是获取view中某个pixel颜色的代码:测试
public static int getColor(View view, int x, int y) { int w = view.getWidth(); int h = view.getHeight(); if (x >= 0 && x < w && y >= 0 && y < h) { Bitmap bmp = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bmp); view.draw(canvas); return bmp.getPixel(x, y); } return 0; }
若是只须要颜色相近,而不彻底相同,能够计算两个颜色的四元素(RGBA)之间的距离,能够用这个方法:spa
public static int getColorDistance(int color1, int color2) { return (int) Math.sqrt( (Math.pow(Color.red(color1) - Color.red(color2), 2) + Math.pow(Color.green(color1) - Color.green(color2), 2) + Math.pow(Color.blue(color1) - Color.blue(color2), 2) + Math.pow(Color.alpha(color1) - Color.alpha(color2), 2))); }