标签: integration-testing

在请求规范中对验证进行验证

在编写请求规范时,如何设置会话和/或存根控制器方法?我正在尝试在我的集成测试中删除身份验证 - rspec/requests

这是一个测试的例子

require File.dirname(__FILE__) + '/../spec_helper'
require File.dirname(__FILE__) + '/authentication_helpers'


describe "Messages" do
  include AuthenticationHelpers

  describe "GET admin/messages" do
    before(:each) do
      @current_user = Factory :super_admin
      login(@current_user)
    end

    it "displays received messages" do
      sender = Factory :jonas
      direct_message = Message.new(:sender_id => sender.id, :subject => "Message system.", :content => "content", :receiver_ids => [@current_user.id])
      direct_message.save
      get admin_messages_path
      response.body.should include(direct_message.subject) 
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

帮助者:

module AuthenticationHelpers
  def login(user)
    session[:user_id] = user.id # session is nil
    #controller.stub!(:current_user).and_return(user) # controller is nil
  end
end …
Run Code Online (Sandbox Code Playgroud)

integration-testing rspec stubbing ruby-on-rails-3

83
推荐指数
2
解决办法
3万
查看次数

在jUnit 4.x中执行套件执行挂钩之前和之后

我正在尝试使用jUnit 4.4执行测试,为一组集成测试执行设置和拆解.拆卸需要可靠运行.我在使用TestNG时遇到了其他问题,所以我想回到jUnit.在运行任何测试之前以及所有测试完成之后,可以执行哪些挂钩?

注意:我们正在使用maven 2进行构建.我尝试过使用maven pre-post-integration-test阶段,但是,如果测试失败,maven会停止并且不会运行post-integration-test,这没有任何帮助.

java testing junit integration-testing

82
推荐指数
5
解决办法
9万
查看次数

单元测试?整合测试?回归测试?验收测试?

是否有人可以清楚地定义这些测试级别,因为我发现在进行TDD或单元测试时难以区分.如果有人能详细说明何时,何时实施这些?

testing tdd integration-testing unit-testing regression-testing

82
推荐指数
5
解决办法
4万
查看次数

在Go中分离单元测试和集成测试

GoLang中是否存在分离单元测试和集成测试的最佳实践(作证)?我有混合的单元测试(不依赖于任何外部资源,因此运行速度非常快)和集成测试(它依赖于任何外部资源,因此运行速度较慢).因此,我希望能够控制是否包含集成测试go test.

最直接的技术似乎是在main中定义-integrate标志:

var runIntegrationTests = flag.Bool("integration", false
    , "Run the integration tests (in addition to the unit tests)")
Run Code Online (Sandbox Code Playgroud)

然后在每个集成测试的顶部添加一个if语句:

if !*runIntegrationTests {
    this.T().Skip("To run this test, use: go test -integration")
}
Run Code Online (Sandbox Code Playgroud)

这是我能做的最好的吗?我搜索了testify文档,看看是否有一个命名约定或者某些内容为我完成了这个,但没有找到任何东西.我错过了什么吗?

integration-testing unit-testing go testify

82
推荐指数
5
解决办法
4万
查看次数

如何在多个活动中测试Android应用程序?

我们正在构建一个复杂的Android应用程序,其中包含许多活动中的许多屏幕和工作流程.我们的工作流程类似于您在银行的ATM机上看到的工作流程,例如,有一个Activity登录过渡到主菜单Activity,可以根据用户的选择转换到其他活动.

由于我们有如此多的工作流程,因此我们需要创建跨多个活动的自动化测试,以便我们可以从头到尾测试工作流程.例如,使用ATM示例,我们希望输入有效的PIN码,验证是否将我们发送到主菜单,选择提取现金,验证我们是否在提取现金屏幕等等,并最终找到自己回到主菜单或"登出".

我们玩过Android(例如ActivityInstrumentationTestCase2)和Positron附带的测试API ,但似乎都没有超出单一范围的测试能力Activity,虽然我们可以在这些工具中找到一些用于某些单元测试的实用工具,但他们赢了不能满足我们测试多个活动的测试场景的需求.

我们对xUnit框架,脚本,GUI记录器/回放等持开放态度,并对任何建议表示感谢.

android integration-testing automated-tests android-testing

79
推荐指数
3
解决办法
5万
查看次数

一些JS运行后如何让Capybara检查可见性?

加载页面后,我有运行和隐藏的代码,并根据xhr返回的数据显示各种项目.

我的集成测试看起来像这样:

it "should not show the blah" do
    page.find('#blah').visible?.should be_true
end 
Run Code Online (Sandbox Code Playgroud)

当我在上下文中手动转到该测试运行的页面时,#blah 并不像我预期的那样可见.我怀疑Capybara正在查看页面的初始状态(在这种情况下是不可见的),在JS运行之前评估DOM的状态并且未通过测试.

是的,我设置:js => true了包含的描述块:)

任何想法将不胜感激!我希望我不必在这里故意拖延,感觉不稳定,会减慢速度.

ruby integration-testing rspec capybara

79
推荐指数
6
解决办法
7万
查看次数

如何编写集成测试以与外部API进行交互?

首先,我的知识在哪里:

单元测试是测试一小段代码的方法(主要是单一方法).

集成测试是测试多个代码区域之间交互的测试(希望它们已经有了自己的单元测试).有时,部分测试代码需要其他代码以特定方式执行操作.这就是Mocks&Stubs的用武之地.因此,我们非常具体地模拟/删除部分代码.这使我们的集成测试可以预测地运行而没有副作用.

所有测试都应该能够独立运行而无需数据共享.如果需要数据共享,这表明系统没有足够的分离.

接下来,我面临的情况:

当与外部API(特别是将使用POST请求修改实时数据的RESTful API)进行交互时,我理解我们可以(应该?)模拟与该API的交互(在此答案中更加雄辩地说明)进行集成测试.我也理解我们可以单元测试与该API交互的各个组件(构造请求,解析结果,抛出错误等).我没有得到的是如何实际解决这个问题.

所以,最后:我的问题.

如何测试与具有副作用的外部API的交互?

一个完美的例子是Google的Content API用于购物.为了能够执行手头的任务,它需要大量的准备工作,然后执行实际请求,然后分析返回值.其中一些没有任何"沙盒"环境.

执行此操作的代码通常具有相当多的抽象层,例如:

<?php
class Request
{
    public function setUrl(..){ /* ... */ }
    public function setData(..){ /* ... */ }
    public function setHeaders(..){ /* ... */ }
    public function execute(..){
        // Do some CURL request or some-such
    }   
    public function wasSuccessful(){
        // some test to see if the CURL request was successful
    }   
}

class GoogleAPIRequest
{
    private $request;
    abstract protected function …
Run Code Online (Sandbox Code Playgroud)

api rest phpunit integration-testing unit-testing

71
推荐指数
1
解决办法
2万
查看次数

Android Instrumentation测试和Android Studio中的单元测试之间的区别?

从Android Studio 1.1rc开始,有单元测试支持,我想知道Android Instrumentation测试和单元测试之间有什么区别.

据我了解:
单元测试对于测试不调用Android API的代码非常有用,而Android测试测试则是集成测试,用于测试Android API特定元素或GUI组件.

但是,如果你在单元测试中使用像RobolectricMockito这样的框架,你可以测试Android代码(不需要设备)如果我没有弄错的话.


这是正确的,还是有更大的区别?如果是这样,每个人的用途是什么?

testing android integration-testing unit-testing android-studio

69
推荐指数
4
解决办法
3万
查看次数

使用Maven进行集成测试的最佳实践?

我有一个我用Maven构建的项目,它使用Hibernate(和Spring)从数据库中检索数据等.

我在项目中对DAO的"测试"扩展了Spring,AbstractTransactionalDataSourceSpringContextTests因此可以将DataSource连接到我的测试类中,以便能够实际运行查询/ Hibernate逻辑,获取数据等.

在其他几个项目中,我使用这些类型的测试与HSQL数据库(内存中或指向文件)一起使用,以便能够有效地测试实际的数据库查询逻辑,而无需依赖外部数据库.这很有用,因为它可以避免任何外部依赖关系,并且在运行测试之前数据库的"状态"(每个都包含在回滚的事务中)都已定义良好.

我很好奇关于组织这些测试的最佳方法,这些测试对于Maven来说实际上是一种松散的集成测试.保持这些测试感觉有点脏src/test/java,但从我读过的内容来看,似乎没有一个一致的策略或实践来组织与Maven的集成测试.

从我到目前为止所看到的,似乎我可以使用Failsafe插件(或Surefire的第二个实例)并将其绑定到integration-test阶段,并且我还可以绑定自定义启动或关闭逻辑(例如用于启动/停止HSQL实例)pre-integration-testpost-integration-test.但是,这真的是最好的方法吗?

所以我的问题基本上是 - 用Maven组织这个的普遍接受的最佳做法是什么?我在文档中找不到任何一致的答案.

我想要的是:

  • 从集成测试中分离单元测试,因此在该test阶段仅运行单元测试
  • 能够将自定义启动/关闭逻辑绑定到pre-integration-testpost-integration-test
  • 将集成测试的报告与单元测试Surefire报告合并/提交

java testing integration-testing maven-2

68
推荐指数
3
解决办法
3万
查看次数

如何配置JPA以在Maven中进行测试

有没有办法在Maven项目中设置第二个persistence.xml文件,以便用于测试而不是用于部署的普通文件?

我尝试将一个persistence.xml放入src/test/resources/META-INF,它被复制到target/test-classes/META-INF中,但似乎是target/classes/META-INF(来自src/main的副本)尽管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
...
Run Code Online (Sandbox Code Playgroud)

我希望能够针对简单的hsqldb配置运行测试,而无需更改JPA配置的部署版本,理想情况是在项目结账后直接进行,无需进行本地调整.

java testing integration-testing maven-2 jpa

67
推荐指数
7
解决办法
5万
查看次数