对于“如何在应用程序中测试SQL语句”这个问题,有一些建议的解决方案-
第三个方案是可行的,我研究了试验容器,它实际上是一个漂亮的解决方案,但相对来说是一个新的解决方案。因此,我们公司对采用它持怀疑态度。
我们使用Mybatis访问PostgreSQL。
另一种方法是在测试之前重新创建整个架构并填充所需的表。问题是,我可以用同名的表创建和删除模式。为了避免名称冲突,我必须更改模式的名称,因此,即使是查询也应该重命名,这一点根本不是首选的。是否有一种方法可以做到这一点,而不改变查询,但指向虚拟模式。
发布于 2017-04-24 11:03:42
您可以为测试目的定义数据库配置,并连接到实际数据库以执行测试。您应该访问测试类中的测试数据库配置。
例如,如果使用spring和hibernate连接到数据库,则可以定义测试hibernate配置xml文件,将其连接到测试数据库。然后,在您的测试类中,按照以下方式使用此配置文件:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguratiion({testHibernate.xml, testSpring.xml , .... })
@TestExecutionListeners({...})
public class TestClass {
....
@Test
public void test1(){
...
}
}因此,您可以访问测试hibernate会话工厂来执行查询。
发布于 2017-09-08 14:42:53
您不应该更改您的查询。在测试中,您应该只更改应用程序将使用的连接url。问题是,如何让这个url起作用。
要获得完整的测试覆盖率,您需要相同的db (正如您注意到的,h2和其他内存中的db并不完全兼容)。postgres没有内存模式,所以您必须自己管理生命周期。你得做几个决定。其中一些:
有一些工具可以帮助您解决一些问题:
- a lot of work is required to create and maintain schema and data. especially when your project is in a intensive development stage.
- it's another abstraction layer so if suddenly you want to use some db feature that is unsupported by this tool, it may be difficult to test it
- free only for small projects
- very young project
你也可以自己填补空白。和往常一样,这是一种交易:时间与金钱
https://stackoverflow.com/questions/43586169
复制相似问题