java - 我如何使用 JUnit 在 DAO 层中激发 SQLExcetpion

标签 java junit code-coverage dao sqlexception

我有一个 DAO 层,我想用 JUnit 对其进行测试。测试覆盖率约为 85%,因此除了 SQLException 的 catch 子句外,几乎每一行代码都被覆盖了。我不知道如何为下面的代码片段引发 SQLException:

Code coverage report
对我来说,唯一可以想到的解决方案是使用 java 反射将最终变量 SELECT_ALL_ATTR 的值重置为:SELLLLLECT * FROM ATTRIBUTES;。我知道我可以通过使用 Mock 框架轻松地测试异常。但是我不想仅仅为了异常测试而引入 Mock 测试,因为其他一切都是用 JUnit 测试的。

除了java反射还有别的办法吗?

最佳答案

在您的案例中模拟 sql 异常并不容易,因为所有依赖项都是由 dao 本身启动的。也许您可以传递一个在某些方法中抛出 SqlException 的假连接?

关于java - 我如何使用 JUnit 在 DAO 层中激发 SQLExcetpion,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17700300/

相关文章:

scala - 您如何专门为集成测试强加 Scala 代码覆盖率?

java - 运行时编辑并保存其他 jar

android - 在 android studio junit 测试中记录消息

java - Java JUnit 测试中的断言

java - 在 Junit 4 中运行所有测试

java - 如何为用 java 和 angular 编写的 Web 服务代码启用代码覆盖率

java - 如何在 Eclipse 中查看 Spock 测试的代码覆盖率

java - Gradle 无法在其他源集中找到测试

javascript - Postman 测试顺利,但 ajax 出错 "Required request body is missing"

java - Angularjs 文件上传不起作用