Java Android-测试活动是否引发异常

Java Android-测试活动是否引发异常,java,android,Java,Android,我有一个活动,它希望在调用意图中有一个额外的集合作为输入值。因为它是一个非常基本的类,没有额外的类就不能工作,所以我想测试每次没有设置额外的类(或者如果它是错误类型的对象)时是否抛出异常。我试过这样做: public class IntentAndroidGameTest extends ActivityInstrumentationTestCase2<BaseActivity> { public BaseActivityTest() {

我有一个活动,它希望在调用意图中有一个额外的集合作为输入值。因为它是一个非常基本的类,没有额外的类就不能工作,所以我想测试每次没有设置额外的类(或者如果它是错误类型的对象)时是否抛出异常。我试过这样做:

     public class IntentAndroidGameTest extends ActivityInstrumentationTestCase2<BaseActivity> {

        public BaseActivityTest() {
        super(BaseActivity.class);
        }

        @Test
        public void testCorrectSetUp() {
        setActivityIntent(createIntent(new CorrectExtra()));
        assertNotNull(getActivity());
        }

        @Test
        public void testSetUpWithoutExtra1() {
        setActivityIntent(createIntent(null));
        try {
            getActivity();
        } catch (IllegalArgumentException e) {
            assertEquals("Extra must be set!", e.getMessage());
        }
        }

        @Test(expected = IllegalArgumentException.class)
        public void testSetUpWithoutExtra2() {
        setActivityIntent(createIntent(null));
        getActivity();
        }


        protected Intent createIntent(Serializable extra) {
        Intent intent = new Intent(Intent.ACTION_MAIN);
        intent.putExtra("myExtra", extra);
        return intent;
        }
    }
公共类IntentAndroidGameTest扩展了ActivityInstrumentationTestCase2{
公共基础活动测试(){
super(BaseActivity.class);
}
@试验
公共无效testCorrectSetUp(){
setActivityIntent(createIntent(新的CorrectExtra());
assertNotNull(getActivity());
}
@试验
public void testSetUpWithoutExtra1(){
setActivityIntent(createIntent(null));
试一试{
getActivity();
}捕获(IllegalArgumentException e){
assertEquals(“必须设置额外设置!”,例如getMessage());
}
}
@测试(预期=IllegalArgumentException.class)
public void testSetUpWithoutExtra2(){
setActivityIntent(createIntent(null));
getActivity();
}
受保护的意图createIntent(可序列化额外){
意向意向=新意向(意向.行动\主要);
意向。额外(“myExtra”,额外);
返回意图;
}
}
该验证被抛出,但测试将其视为一个坏迹象,并指出:

测试未能运行到完成。原因:“由于“java.lang.IllegalArgumentException”,检测运行失败


我如何拦截并告诉Android测试我想要异常?

测试期望您的代码实际抛出异常,当您自己捕获异常时,您不让测试框架看到它,结果是方法退出而不抛出异常,这不是预期的结果。卸下试扣块,测试应通过。

否,否则不会通过。catch块和“expected”都无法处理异常,因为框架以前捕获过它。但是我编辑了这个问题,这样人们就不会相信我真的期望这两个问题都会被触发。顺便说一下,你想在没有设置额外值的情况下测试一个案例,但实际上你在测试一个额外值设置为null的案例。这些是不同的事情。是的,你是对的。我必须稍后更改,但现在我只能测试是否抛出任何类型的异常。这可能不是必需的,因为您将测试的是系统的行为,而这不是您应该测试的。您应该测试应用程序的行为,因为您正在开发应用程序,而不是系统。