- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
针对 Java 环境中的真实数据库模式对 DAO 进行敏捷集成测试的当前良好实践是什么?
(我所说的“敏捷”是指对这个问题最精简、最自动化和最简单的解决方案)。
我希望实现测试自动化,证明数据访问层与数据库的实际运行实例无缝集成。我们针对特定供应商数据库测试自定义 SQL 非常重要。 IE。如果我们编写 T-SQL,我们希望针对 SQL Server 进行测试。
是否应该将一个数据库专用于所有正在运行的测试,但不进行提交?或者每个测试环境都应该有一个专用的数据库吗?
人们如何处理设置和拆卸? DBUnit 还在流行吗? Spring 有何帮助?
最佳答案
It is important that we test our custom SQL against specific vendor DBs
所以你应该为每个供应商数据库创建一套测试
@RunWith(Suite.class)
@Suite.SuiteClasses({})
public class SQLServerTestSuite {
@BeforeClass
public static void setUpClass() throws Exception {
}
@AfterClass
public static void tearDownClass() throws Exception {
// clean database
}
}
Should a single database be dedicated to all running tests, but with no commits ?
建议您执行 SQL 命令但使用回滚命令,因为如果使用提交,您可以更改当前测试的状态以及更改其他测试的状态。否则,您可以处理意外行为。
对于每个开发者,推荐一个 database sandbox .这允许每个用户以他们认为合适的任何方式修改数据库并使用测试来运行应用程序,而不用担心他们的测试与其他用户的测试之间的任何交互
How do people deal with setup and teardown ?
public class PersonTest {
@Before
public void setUp() {
// set up state to run the test
}
@After
public void teardown() {
// Transaction rollback
}
}
关于 Transaction rollback pattern 的好处是它让数据库处于与我们开始测试时完全相同的状态,不管我们对数据库内容做了什么更改
Is DBUnit still in popular use ?
DBUnit 用于将数据库表与包含以下内容的 XML 文件进行比较预期值。您应该牢记 DBUnit 处理手工编码的设置。然而,尽管这种方法更彻底,开发和维护这些类型的测试非常繁琐。此外,测试不会检测新添加的字段或属性的缺失映射。
How could Spring help ?
Spring 内置了对事务回滚模式的支持,并支持命名参数(SqlParameterSource),这允许您在多行和可读的 xml 文件中为每个供应商数据库外部化普通的 jdbc 查询,例如
<?xml version="1.0" encoding="UTF-8"?>
<queries>
<query name="PERSON_BY_ID">
<![CDATA[
select
*
from
PERSON
where
PERSON.ID = :integerId
]]>
</query>
</queries>
注意查询参数。它遵循 JavaScript 代码风格,您将参数的种类声明为前缀。现在您可以创建一个类,在其中定义命名查询集
public class SQLServerQuery {
public static final String PERSON_BY_ID = "PERSON_BY_ID";
}
对于动态查询,检测查询逻辑中的错误通常很重要,例如使用 < 而不是 <=。为了捕捉这些类型的错误,我们需要编写测试,用测试数据填充数据库,执行查询,并验证它是否返回预期的对象。不幸的是,这类测试的编写和执行都很耗时。
关于java - Java 敏捷集成测试 DAO -> 数据库的最佳实践是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3775287/
Closed. This question is opinion-based。它当前不接受答案。 想要改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。 3年前关闭。
已关闭。这个问题是 off-topic 。目前不接受答案。 想要改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 已关闭10 年前。 Improve th
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 8年前关闭。 Improve this q
关闭。这个问题需要更多 focused .它目前不接受答案。 想改进这个问题?更新问题,使其仅关注一个问题 editing this post . 5年前关闭。 Improve this questi
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 6 年前。 Improv
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 5 年前。 Improv
Closed. This question is opinion-based。它当前不接受答案。
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 5 年前。 Improve
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 5 年前。 Improve
Closed. This question is opinion-based 。它目前不接受答案。 想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文来回答。
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 4年前关闭。 Improve thi
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 5 年前。 Improv
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 5 年前。 Improve
我正在尝试实现一个首页 Wordpress 上传器,它使用户可以从 Wordpress 页面上传图像,并在上传前调整图像大小。我找到了敏捷上传器。上传者是一种形式。 问题是当我单击表单中的提交按钮发送
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 3年前关闭。 Improve thi
关闭。这个问题是opinion-based .它目前不接受答案。 想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题. 4年前关闭。 Improve t
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 3年前关闭。 Improve thi
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 4年前关闭。 Improve this qu
我试图在使用 HTTP 模块在浏览器中呈现之前更改 HTML 页面。我试图实现敏捷 HTML 解析器,但它似乎只能从文件中读取。 如何从缓冲区/流中读取它? public override void
在安装 swift pod - Nimble, Quick 时,我遇到了奇怪的问题。 pod install 后,我看到了所有 pod 的成功消息,但所有框架都显示为红色。当尝试导入这些模块时,开始向
我是一名优秀的程序员,十分优秀!