Questions tagged «integration-testing»

一种软件测试形式,其中将各个软件模块(或组件)组合在一起并作为一组进行测试。集成测试在单元测试之后和系统测试之前进行。

4
如何编写用于与外部API交互的集成测试?
首先,我的知识是: 单元测试是那些测试一小段代码(大多数是单一方法)的测试。 集成测试是测试多个代码区域之间的交互的测试(希望它们已经具有自己的单元测试)。有时,被测代码的某些部分需要其他代码以特定方式起作用。这是Mocks&Stubs出现的地方。因此,我们模拟/存根代码的一部分以非常具体地执行。这使我们的集成测试可以预期地运行而没有副作用。 所有测试都应能够独立运行而无需数据共享。如果必须进行数据共享,则表明系统耦合不够充分。 接下来,我面临的情况是: 与外部API(特别是RESTful API,将通过POST请求修改实时数据)进行交互时,我了解我们可以(应该吗?)模拟出与该API的交互(在此答案中更雄辩地说),以进行集成测试。我也了解我们可以对与该API交互的各个组件进行单元测试(构造请求,解析结果,抛出错误等)。我不明白的是如何真正做到这一点。 所以,最后:我的问题。 如何测试与具有副作用的外部API的交互? 谷歌的Content API for shopping是一个很好的例子。为了能够执行手头的任务,需要大量的准备工作,然后执行实际的请求,然后分析返回值。其中一些没有任何“沙盒”环境。 执行此操作的代码通常具有相当多的抽象层,例如: <?php class Request { public function setUrl(..){ /* ... */ } public function setData(..){ /* ... */ } public function setHeaders(..){ /* ... */ } public function execute(..){ // Do some CURL request or some-such } …

7
Android Instrumentation测试和Android Studio中的单元测试之间的区别?
自Android Studio 1.1rc起,提供了单元测试支持,我想知道Android Instrumentation Tests和Unit测试之间有什么区别。 据我了解: 单元测试对于测试未调用Android API的代码很有用,而Android工具测试则是用于测试特定于Android API的元素或GUI组件的集成测试。 但是,如果在单元测试中使用Robolectric或Mockito之类的框架,那么如果我没有记错的话,可以测试Android代码(无需设备)。 这是正确的还是更大的区别?如果是这样,每个有什么用?

16
如何在Maven中配置JPA以进行测试
有没有一种方法可以在Maven项目中设置第二个persistence.xml文件,以使其用于测试,而不是用于部署的常规文件? 我尝试将persistence.xml放入src / test / resources / META-INF中,该副本被复制到target / test-classes / META-INF中,但似乎是target / classes / META-INF(来自src / main的副本/ resources)成为首选,尽管mvn -X test以正确的顺序列出了类路径条目: [DEBUG] Test Classpath : [DEBUG] /home/uqpbecke/dev/NetBeansProjects/UserManager/target/test-classes [DEBUG] /home/uqpbecke/dev/NetBeansProjects/UserManager/target/classes [DEBUG] /home/uqpbecke/.m2/repository/junit/junit/4.5/junit-4.5.jar ... 我希望能够针对简单的hsqldb配置运行测试,而不必更改JPA配置的部署版本,理想情况下,在项目检出后立即进行,而无需进行任何本地调整。

4
与Maven进行集成测试的最佳实践?
我有一个正在使用Maven构建的项目,该项目使用Hibernate(和Spring)从数据库中检索数据,等等。 我对项目中DAO的“测试”扩展了Spring的功能,AbstractTransactionalDataSourceSpringContextTests以便可以将DataSource连线到我的被测类中,从而能够实际运行查询/休眠逻辑,获取数据等。 在其他几个项目中,我将这些类型的测试与HSQL数据库(内存中或指向文件的)配合使用,从而能够有效地测试实际的数据库查询逻辑,而无需依赖外部数据库。这很好用,因为它避免了任何外部依赖关系,并且在运行测试之前将数据库的“状态”(每个状态都包装在回滚的事务中)进行了很好的定义。 不过,我对组织这些测试的最佳方法感到好奇,这实际上是使用Maven进行的集成测试的一种松散风格。保留这些测试有点脏src/test/java,但是据我所读,似乎没有一致的策略或实践来组织与Maven的集成测试。 从到目前为止的内容来看,似乎可以使用Failsafe插件(或Surefire的第二个实例)并将其绑定到integration-test阶段,并且还可以绑定自定义启动或关闭逻辑(例如用于启动/停止HSQL实例)到pre-integration-test或post-integration-test。但是,这真的是最好的方法吗? 所以我的问题基本上是-与Maven一起组织此活动的公认最佳实践是什么?我在文档中找不到任何一致的答案时遇到麻烦。 我想要的是: 将单元测试与集成测试分开,因此在此test阶段仅运行单元测试 可以将自定义启动/关闭逻辑绑定到pre-integration-test和post-integration-test 将来自集成测试的报告与单元测试Surefire报告合并/提交
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.