android - 如何测试 assert 在 Android 中抛出异常

标签 android exception junit

有没有比这更优雅的方式在 Android 中执行断言抛出异常?

public void testGetNonExistingKey() {   
        try {
            alarm.getValue("NotExistingValue");
            fail( );
        } catch (ElementNotFoundException e) {

        }
}

这样的东西不起作用?!

    @Test(expected=ElementNotFoundException .class)

谢谢,马克

最佳答案

您使用的是 junit4 测试运行器吗?如果您正在运行 junit3 测试运行器,@Test 注释将不起作用。检查您使用的版本。

其次,在代码中检查异常的推荐方法是使用规则(在 junit 4.7 中引入)。

@Rule
public ExpectedException exception = ExpectedException.none();

@Test
public void throwsIllegalArgumentExceptionIfIconIsNull() {
    // do something

    exception.expect(IllegalArgumentException.class);
    exception.expectMessage("Icon is null, not a file, or doesn't exist.");
    new DigitalAssetManager(null, null);
}

可以继续使用@Test(expected=IOException.class),但是上面的好处是如果在调用exception.expect之前抛出异常,那么测试就会失败。

关于android - 如何测试 assert 在 Android 中抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7552587/

相关文章:

java 像素图像处理

使用 RxJava 处理空查询结果的 Android Room

android - 为什么有些用户在 SQLiteDatabase.dbopen() 中得到 SQLiteException?

java - Java 中使用内存映射文件的 IO 错误

python - 函数定义周围的 try- except 会忽略异常处理

java - 如何使用 mockito 捕获特定类型的列表

java - 使用 JUnit 测试多线程代码 - 奇怪的行为

android - 构建android apk时如何将参数传递给aapt?

scala - Future.successful(Failure(Exception)) 与 Future.failed()

java - 无法在 Spring 3.2.8 和 junit 4.4 中 Autowiring 现场执行 Junit 测试