對於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))); }