fut*_*lib 22 android unit-testing android-custom-view android-view
在Android中有几种单元测试方法,测试我编写的自定义视图的最佳方法是什么?
我目前正在测试它作为我在仪器测试案例中的活动的一部分,但我宁愿只测试视图,孤立.
ada*_*dam 20
缺少以View为中心的TestCase实现的简单解决方案是在您的测试项目中创建一个包含您的视图的简单Activity.这将允许您使用简单的Activity对视图编写测试.活动测试信息:
http://developer.android.com/reference/android/test/ActivityUnitTestCase.html
Muh*_*hab 18
井单元测试是一种方法,通过该方法测试各个源代码单元以确定它们是否适合使用.因此,当您说要测试自定义视图时,可以检查自定义视图的各种方法,如"onTouchEvent","onDown","onFling","onLongPress","onScroll","onShowPress","onSingleTapUp", "onDraw"和其他各种因素取决于您的业务逻辑.您可以提供模拟值并对其进行测试.我建议两种测试自定义视图的方法.
1)猴子测试 猴子测试是由自动化测试工具执行的随机测试.猴子测试是在没有特定测试的情况下运行的单元测试.在这种情况下,猴子是任何输入的生产者.例如,猴子测试可以将随机字符串输入到文本框中以确保处理所有可能的用户输入或提供垃圾文件以检查对其数据盲目信任的加载例程.这是一个黑盒子测试技术,它可以在很多独特的条件下检查你的自定义视图,你会感到惊讶:).
2)单元测试
2a)使用Robotium单元测试Framwork
访问Robotium.org或http://code.google.com/p/robotium/并下载示例测试项目.Robotium是一个非常易于使用的框架,可以轻松快速地测试Android应用程序.我创建它是为了尽可能轻松地测试高级Android应用程序.它与ActivityInstrumentationTestCase2一起使用.
2b)使用Android测试框架
以下是参考链接:http: //developer.android.com/reference/android/test/ActivityInstrumentationTestCase2.html 和 http://developer.android.com/reference/android/test/ActivityUnitTestCase.html
对于初学者:http: //developer.android.com/guide/topics/testing/testing_android.html
据一位用户说:除了轻松测试非平台相关逻辑外,我还没有找到一种运行测试的聪明方法,到目前为止(至少对我来说)任何实际的平台逻辑测试都很麻烦.无论如何,这几乎都是微不足道的,因为我发现模拟器和我的实际设备之间的实现存在差异,我讨厌在我的设备上运行单元测试实现,以便之后删除应用程序.
我的策略是:尽量简洁并使逻辑思路清晰,然后逐个测试实现(不太理想).
此外,Stephen Ng为Android项目解决方案提供了真正的单元测试方法:https://sites.google.com/site/androiddevtesting/
一位用户进行了截屏视频.
这是我使用单元测试工作的ScreenCast.简单单元测试和更复杂的单元测试,它们依赖于对Context或Activity对象的引用. http://www.gubatron.com/blog/2010/05/02/how-to-do-unit-testing-on-android-with-eclipse/
希望它可以帮助您在所有可能的条件下测试自定义视图:)
评论(futlib)您的所有建议似乎都涉及测试ACTIVITY,而我真的只想测试VIEW.我可能想在其他活动中使用这个视图,所以对我来说用特定的一个测试它没有多大意义. - futlib
答:要实现自定义视图,通常首先为框架调用所有视图的某些标准方法提供覆盖.例如自定义视图的"onDraw","onKeyDown(int,KeyEvent)","onKeyUp(int,KeyEvent)","onTrackballEvent(MotionEvent)"等.因此,当您想要对自定义进行单元测试时,您必须测试这些方法,并为其提供模拟值,以便您可以在所有可能的情况下测试自定义视图.测试这些方法并不意味着您正在测试您的ACTIVITY,但它意味着测试活动中的自定义视图(方法/功能).此外,您必须最终将自定义视图放在活动中,以便目标用户体验它.经过全面测试后,您的自定义视图可以放在许多项目和许多活动中.
cso*_*orn 15
这是一个不同的建议,在许多情况下工作正常:假设您从布局文件中引用自定义视图,您可以使用AndroidTestCase,给视图充气,然后单独对其执行测试.这是一些示例代码:
my_custom_layout.xml:
<?xml version="1.0" encoding="utf-8"?>
<de.mypackage.MyCustomView ...
MyCustomView.java:
public class MyCustomView extends LinearLayout {
    public MyCustomView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }
    public void setTitle(CharSequence title) {
        ((TextView) findViewById(R.id.mylayout_title_textView)).setText(title);
    }
...
MyCustomViewTest.java:
public class MyCustomViewTest extends AndroidTestCase {
    private MyCustomView customView;
    @SuppressLint("InflateParams")
    @Override
    protected void setUp() throws Exception {
        super.setUp();
        customView = (MyCustomView) LayoutInflater.from(getContext())
            .inflate(R.layout.my_custom_layout, null);
    }
    public void testSetTitle_SomeValue_TextViewHasValue() {
        customView.setTitle("Some value");
        TextView titleTextView = (TextView) valueSelection.findViewById(R.id.mylayout_title_textView);
        assertEquals("Some value", titleTextView.getText().toString());
    }
...
| 归档时间: | 
 | 
| 查看次数: | 15778 次 | 
| 最近记录: |