问题标签 [jbehave]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
bdd - 写一个 JBehave 故事
这个问题不是关于 REST,而是关于使用在@When
后续的调用中返回的值@Then
。
我正在考虑使用 JBehave 来测试对 REST api 的一些调用。首先有一个post
创建用户
据我了解 REST,这就是Atom api所做的,id 在位置标头中返回,例如/user/22
. 因此,我想就响应做出一些断言。
我可以通过在 Steps 类中创建一个成员变量并将响应存储在那里来做到这一点,我以前也使用过这种方法,但这是正确的方法吗?
java - 发生异常时 JBehave 不会失败构建
我正在使用 JBehave 运行使用 WebDriver 编写的测试。Maven 用于自动化构建过程。现在,当我运行测试并且它们失败时,即抛出有关超时的异常等,整个构建不会中断。
这是异常的示例输出:
谁能告诉我为什么在那之后构建不会失败以及如何让它失败?如果您需要更多信息,请告诉我什么。
webdriver - 如何在 Jbehave 中将相同的故事文本实现到不同的页面对象
我刚开始使用带有 WebDriver 的 Jbehave Web,想知道是否可以将相同的文本步骤应用于不同的步骤方法。
比如说你有以下两种情况
方案 1
- 鉴于我在要购买的房产页面上
- 当我点击搜索
- 然后我应该看到包含所有要购买的属性的结果页面
方案 2
- 鉴于我在要出租的物业页面上
- 当我点击搜索
- 然后我应该会看到包含所有要出租的房产的结果页面
如果我使用页面对象模式实现这一点,我将拥有一个名为 buyProperties 的页面对象,同样对于出租属性,一个页面对象称为类似rentProperties 的东西(以及结果页面对象)。
在这两种情况下,都会单击搜索按钮/链接,因此步骤文本是相同的。然而,实际上它们位于不同的页面(和页面对象)上。
我怎样才能实现 Jbehave 以便它知道调用 step 方法来实现单击rentProperties 页面上的搜索按钮的租赁场景,而对于购买场景它知道调用实现单击 buyProperties 页面上的搜索按钮的 step 方法?
maven - Maven JBehave:编码故事 UTF8
我们设法使用 Eclipse 中的 JBehave 创建和运行具有国际化故事的测试。一切都很顺利。
但是当我们尝试使用 maven 插件运行它们时,我们无法对编码问题一无所知(例如,不是从故事中读取“scénario”,而是得到“Scénario”:显然是一个 UTF8 编码问题) .
是否有人找到了一种方法让 JBehave 使用 maven 插件以 UTF8 格式阅读故事?
我们已经尝试过的:
- 添加 -Dfile.encoding=UTF-8 选项
- 使用 UTF8 更改关键字文件
- 更改 ISO => 中的整个项目编码,它可以工作但不适合需要以 UTF8 显示消息的生产部分
我们的 Pom.xml
jbehave - JBehave 模式变体 - 尝试匹配替代方案
我的故事中有以下内容,我正在尝试匹配
在"action"和document之间可能有of , for或空 到 "status"是可选的 并且 nextAction是可选的
在步骤文件中,我有以下内容
这是匹配故事文件中的块 1 和 2,但不匹配块 3 和 4。
你能给我一些关于我需要如何修改步骤文件以匹配所有 4 个块的指示吗?
我尝试添加具有 to 状态的别名,并删除了下一步操作,但是 JBehave 错误并带有重复的候选步骤错误。
谢谢
java - 将 JBehave 与 SpringJUnit4ClassRunner 结合以启用事务回滚
本质:
如何在使用JBehave运行的 JUnit 测试中自动回滚我的休眠事务?
问题似乎是 JBehave 想要但根据需要SpringAnnotatedEmbedderRunner
注释测试。@Transactional
SpringJUnit4ClassRunner
我试图找到一些关于如何使用 实现回滚SpringAnnotatedEmbedderRunner
或使 JBehave 工作的文档,SpringJUnit4ClassRunner
但我都无法工作。
有没有人有一个(最好是简单的)设置来运行带有 Spring 和 Hibernate 以及事务自动回滚的 JBehave 故事?
到目前为止有关我的设置的更多信息:
使用 Spring 工作 JBehave - 但不使用自动回滚:
在我的测试步骤中,我可以@Inject
做得很好:
(是的,databaseSetupHelper 方法都是事务性的)
PersonProvider 基本上是一个org.springframework.data.jpa.repository.support.SimpleJpaRepository
. 所以可以访问 entityManager 但控制事务(使用开始/回滚)不起作用,我猜是因为@Transactional
在该助手类内部完成的所有 s 。
我还读到 JBehave 在不同的上下文中运行?会话?什么?这会导致对测试开始的事务失去控制?很混乱的东西。。
编辑:
编辑上面的改写帖子以反映我当前的知识并缩短整个内容,以便问题变得更加明显并且设置不那么突兀。
bdd - 如何使用不同的参数多次运行故事
我开发了一个 jBehave 故事来测试我们系统中实现的一些工作流程。假设这个故事叫做 customer_registration.story
这个故事是我们系统支持的其他一些更复杂的工作流程的起点。不同的故事也涵盖了那些更复杂的工作流程。假设我们有一个由 customer_login.story 覆盖的更复杂的工作流程
所以 customer_login.story 看起来像下面这样:
一切都很完美,我对此很满意。
3.上面第1点的故事(客户注册)是我需要在不同的数据集上运行的东西。假设我们的系统支持 i18n,我们需要检查所有支持的语言的客户注册故事是否运行正常,假设我们想测试我们的客户注册在 en-gb 和 zh-tw 上都可以正常运行
所以我需要实现一个 multi_language_customer_registration.story 看起来像这样:
关于如何实现这一目标的任何想法?请注意,下面的内容不是一个选项,因为我确实需要在运行之间运行清理步骤。
在客户注册故事中移动清理步骤也不是一种选择,因为登录故事将停止工作。
提前致谢。
PS 正如您在现实中可能猜到的那样,我们创建的故事更复杂,重构它们并非易事,但我很高兴这样做以获得真正的收益。
java - 使用 webdriver API 实现 BDD (JBehave+Webdriver)
我正在尝试通过实现 BDD 框架来增强我的 Webdriver 脚本。我开始了解 JBehave (JBehave+Webdriver),但在继续之前,我担心需要多少 Java 代码实现,因为我主要从事自动化测试。根据我的看法,JBehave 分三个步骤工作:
- 添加故事文件
- 将故事文件实现为 Java(我在这一步遇到问题)
- 实现 Webdriver 调用。
因此,使用这种方法如果我有一个用户故事,例如注册到应用程序中,那么:
- 实施用户故事
- java中的实现——用Java实现完整的认证逻辑
- 实施 webdriver - 自动化用户操作
另一个例子:我有一个执行特定工作流的用户故事,需要在 5-6 页上执行一组操作,然后我需要为此实现/模拟 Java 代码。
这是 JBehave 的工作方式吗?还有没有其他选择。
selenium - 在 JBehave Web 中运行 FirefoxWebDriverProvider 时如何更改浏览器窗口的大小
我们正在使用 JBehave Web 来为一个新项目驱动我们的 selenium 测试套件,并且非常喜欢 JBehave 上可用的 Etsy.com 示例,尤其是 Java/Spring maven 原型,因为它适合我们的架构。
到目前为止最大的问题是文档,这就是为什么我在这里发帖希望我能从其他类似情况的人那里得到一些帮助。
看起来 JBehave Web 只提供了一个“FirefoxWebDriverProvider”类,而没有为 Chrome 提供相应的类。有没有其他人遇到过这个问题?您是否编写了自己的 ChromeDriverProvider?
此外,我们需要更改默认出现的浏览器的大小,我似乎无法在测试运行的引导过程中找到这样做的方法。
我们正在使用 Maven 原型:jbehave-web-selenium-java-spring-archetype,它使用 jbehave-maven-plugin 和“run-stories-with-annotated-embedder”目标,所以我们使用“Annotated”扩展 InjectableEmbedder 的方法。
如果有人可以提供一些指导,我将不胜感激,即使只是指向更多示例。
internet-explorer - 如何在多个浏览器上运行 jBehave 测试?
我目前在当前浏览器上运行 JBehave Selenium 测试,我使用 PropertyWebDriverProvider() 来设置我的浏览器。有我的代码:
公共类 PlayerLandingPageRunner 扩展 JUnitStories {
...
如何设置它以在其他浏览器上运行?IE,铬?
谢谢!