- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
Ruby 1.9.3、Rails 3.1.10、RSpec 2.13.0、Capybara 2.2.1
我正在为 Rails 3 应用程序编写测试——一个供客户(和管理员)配置各种电话设置的 GUI。我已经编写了 6 个左右的规范文件,之前还编写了很多其他文件(我将其用作模板)。以下是规范文件的快照。
# spec/features/admin/administrators_spec.rb
require 'spec_helper'
include AdministratorHelper
include Helpers
feature "Exercise Administrators page"
include_context "shared admin context"
background do
visit administrators_path
end
scenario "show index page" do
title.should == "Administrators"
end
# ... other happy path tests
# SAD PATH TESTS #
scenario "validation: delete no administrators", js:true do
click_button "Delete"
page.driver.accept_js_confirms!
error_message("Error: You did not select any administrators for deletion.")
end
end
据我了解,feature
/scenario
是 Capybara 独有的...和验收测试。其他合作者说我们的“验收测试”测试一切——数据库是否保存条目, View 是否正确呈现等。每个规范都与 GUI 中的页面相关联,而不是模型/ Controller 。
他让我参加了 edX (CS169.1x) 类(class),他们以不同的方式教授测试——每个模型和 Controller 都有单独的规范文件。他们还使用 describe
/context
/it
方法编写测试。
describe
/it
编写测试相对于 feature
/scenario
有什么优势吗? (除了语法糖)功能
/场景
,它会减慢测试套件的速度吗? (与使用 RSpec 的关键字相比)感谢您提供的所有帮助和说明。
最佳答案
我觉得这个问题有点宽泛,但可以根据我自己的经验提出一些建议和意见来回答。
- Is there any advantage to writing tests with describe/it over feature/scenario? (Besides syntactic sugar)
据我所知没有。但是,您可能会发现一些方便的测试框架功能在一种方案中比在另一种方案中更容易实现。
- By using Capybara's feature/scenario, does it slow down the test suite? (Compared to using RSpec's keywords)
仅使用关键字不会对处理速度产生很大影响。您使用什么样的网络驱动程序和主机模拟将产生更大的影响。
- What exactly are the tests I am writing (as explained in the code block)? Acceptance, unit, a combination?
我称之为验收测试。然而,并不总是有明确的分界线,您需要查看测试将如何运行,以及它们将如何在您的开发过程中使用。
一个成熟的开发管道可能有两个或三个用于不同目的的独立测试套件,并且可能使用不同的测试框架来实现。例如,您可能需要一组非常快速的测试(通常是单元测试)作为新代码提交的快速自动化测试来运行。
- Would writing tests like the above alone achieve higher coverage? (Our next goal is >80%)
测试可以使用应用程序的任何用户可访问的功能,并且您自己的任何被使用的代码都可以被视为涵盖。如果您没有大量实用程序脚本或其他用户无法访问的代码,您很可能可以获得高于 80% 的 C0 覆盖率(Ruby 覆盖率工具通常不会提供更深入的细节,例如 C1)。
我怀疑使用特定测试框架的关键字会产生最小的影响。但是,使用 Capybara 通过 Web 界面对应用程序进行验收测试要比对单个模块运行较低级别的单元测试要慢得多。
测试速度可以有数量级的变化。对于围绕快速模块的紧密单元测试,我可能期望每秒运行 100 个示例。在 Web 开发项目中,我通常在单元测试中每秒运行 10-20 个示例,但在验收测试中可能每秒运行 1 个示例(这大致是您在这里得到的大概)。当在站点的托管副本上通过浏览器驱动程序使用 Capybara 时,我可能希望在 10 秒内运行一个示例,因此具有 100 多个测试的套件必须仅针对关键路径测试运行,例如与发布候选测试。
关于ruby-on-rails - 在规范中使用 describe/it 优于 feature/scenario 的优势? (除了语法糖),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27743806/
我想显示一个图像(大于 iPhone 的屏幕),用户可以滚动。不难,我已经用这段代码完成了:在我的 .h 文件中 @interface mappa1 : UIViewController { IBO
bash 联机帮助页说: Redirecting Standard Output and Standard Error Bash allows both the standard output (fi
我将大量数据绑定(bind)到 TreeView 控件,因为数据是自然的类别层次结构。问题是它有很多。我已经设法通过仅绑定(bind)那些出现在可见树中的节点来消除大量开销,但这仍然在 ViewSta
我正在尝试为 mysql 操作与 redis 操作制作基准测试脚本。 这是我尝试过的: 1./ List of comment ids with a separate hash of comment
我很想知道是否有比 FileObserver 更好的方法来监视目录的文件更改/创建/删除。 FileObserver 需要持续引用它,这需要持续运行的服务,这很困难,也是一种不好的做法,对吧? 对于如
我创建了一个带有 NSOpenGLView 的窗口,我正在将 openGL 内容渲染到其中。 我想向 View 添加一些按钮和文本字段:我可以使用界面生成器(或代码)添加 NSTextFields 和
如何编码 JAXBElement 列表? 例如,我有一个无法注释的 POJO: public class APojo { private String aString; public APojo()
我正在开发一个博客,我的客户希望在其中使用大量图像(文章、标题、广告等)。他几乎不想要任何文本,因为他希望用阿拉伯语开发博客并且他对网络浏览器支持的任何字体都不满意,他也不想采用 EOT,他将每天更新
我想在文本字段上添加一个标签,该标签会在用户键入时发生变化。问题是文本字段的插入符号位于标签后面(如果我将标签放在文本字段前面)。我始终可以使文本字段的背景透明,并在标签和文本字段后面添加另一个禁用的
我正在尝试在 iOS 应用程序中创建一个特定的布局,其中“背景”是一个 MKMapView,覆盖层是一个 UIScrollView。这个想法是有两个屏幕,一个带有 map ,另一个带有一些附加信息。用
我需要在 UITableViewController 上放置一个 UIView,目前我是这样放置的 [self.navigationController.view addSubview:searchV
我有一个非常简单的问题要问:我需要在屏幕右下角的 ImageView 上放一个小 Logo ,整个屏幕都很大,但我不知道如何设置坐标或如何设置说 ImageViews 处于相对位置。 像这样: 最佳答
我试图让 mapView 覆盖整个 UITableViewCell 并禁用此 mapView 上的所有用户事件,但仍然可以单击单元格。但是,此 mapView(即使我将 subview 发送回)正在拦
我们即将获得 Java EE6(使用 Glassfish v3 作为引用实现)。计划发布时间为 12 月 9 日。虽然仍有相当多的公司正在努力将他们的代码库从早期版本迁移到 EE5,但我们处于开始开发
为什么(在 WPF、C#、 Entity Framework 中)将 ListBox 绑定(bind)到在 ObjectSet 上创建的 ObservableCollection(来自 Entity框
在 hibernate 中使用 @NamedQuery 而不是 @NamedNativeQuery 有什么好处,反之亦然。我无法发现确切的区别或在什么情况下我们应该使用 @NamedQuery 而不是
在 Dart 中,检查值是否为 == null似乎类似于检查它是否is Null .为什么前者更可取? 最佳答案 这是您正在进行的比较类型。在 == null ,您正在将对象/原始对象与 null 进
我使用的是 Java 1.6。我有一组项目,每个项目都有一个名称和一组组件。每个组件也有一个名称。 Set Class Item String name Set Class Compo
如果我想在我的应用程序中支持脚本,是否 scriptcs提供比仅使用普通 Vanilla 的任何特殊优势 Roslyn脚本引擎? 最佳答案 不幸的是,目前还没有太多关于托管 scriptcs 的文档,
我正在我的应用程序中使用 Struts 和 Spring jdbc 模板。 我必须在我们的代码中使用 Hibernate 模板。 谁能告诉我为什么要使用 Hibernate 模板? 使用 Spring
我是一名优秀的程序员,十分优秀!