Tag: bdd

运行Cucumber JUnit测试时的InitializationError

package cucumber; import org.junit.runner.RunWith; import cucumber.api.CucumberOptions; import cucumber.api.junit.Cucumber; @RunWith(Cucumber.class) @CucumberOptions( format={“pretty”}, features= “src/features/” ) public class cucumberRunner { } 使用: 黄瓜核心-1.2.4 黄瓜Java的1.2.4 黄瓜的junit-1.2.4 JUnit的-4.12 Eclipse Mars.1 java 8 错误跟踪: java.lang.NoClassDefFoundError:org / dom4j / java上java.lang.Class.privateGetDeclaredMethods(未知来源)的java.lang.Class.getDeclaredMethods0(本地方法)中的元素java.lang上的java.lang.Class.privateGetPublicMethods(未知来源)。位于cucumber.runtime.java.JavaBackend.loadGlue(JavaBackend.java:86)的cucumber.runtime.Runtime.Runtime的cucumber.runtime.java.MethodScanner.scan(MethodScanner.java:40)中的lang.Class.getMethods(未知来源)。 (runtime.java:91)在cucumber.runtime.Runtime。(Runtime.java:69)在cucumber.runtime.Runtime。(Runtime.java:65)在cucumber.api.junit.Cucumber.createRuntime(Cucumber.java: 78)在gree.api.junit.Cucumber。(Cucumber.java:58)at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)at sun.reflect.DelegatingConstructorAccessorImpl.newInstance (未知来源)atg.junit.internal.builders.AnnotatedBuilder.buildRunner(A中的java.lang.reflect.Constructor.newInstance(未知来源) nnotatedBuilder.java:104)org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86)org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)org.junit.internal .builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26)org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:33 )org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createUnfilteredTest(JUnit4TestLoader.java:84)at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:70)at org。 eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:43)位于org.eclipse.jdt的org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:444)。 org.eclipse.jdt.internal.junit.runner中的internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)。 RemoteGestRunner.run(RemoteTestRunner.java:382)位于org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)引起:java.lang.ClassNotFoundException:java的org.dom4j.Element。 java.lang.ClassLoader.findClass(未知来源)at java.lang.ClassLoader.loadClass(未知来源)at sun.misc.Launcher $ […]

多语言集成测试框架

想象一下,您拥有一个由不同组件构成的相当复杂的面向服务的体系结构。 组件使用不同的语言(Java,PHP,Ruby)编写,并以不同的方式相互通信(即UI,REST API,在某些情况下共享一些DB表等)。 我正在尝试为一些端到端测试设计集成测试框架。 我们已经对单个组件进行了单元/集成测试,但是我们希望构建一些能够端到端地完全测试我们部署的系统(在真实环境中)的东西,以确保function(根据个人的预期行为)组件正确提供,并且架构也正确配置。 我面临的第一个问题是我们的大多数UI都是用PHP编写的,并且已经使用Cucumber和顶部的几个插件为它编写了UI集成测试。 我正在编写的测试框架(用Java)应该触发这些function测试,然后检查相关组件的行为是否符合预期。 显然,我可以使用像Selenium这样的Java友好组件重写UI测试,但复制工作没有意义。 另一个解决方案是在Java中使用exec()调用运行现有测试,等待它们返回,可能解析输出并继续执行需要执行的其他操作/检查。 考虑到项目的编写方式,在Java中嵌入现有的PHP代码似乎不是一个可行的解决方案。 所描述的解决方案中没有一个听起来令我信服。 理想情况下,拥有某种多语言(和多技术)集成框架会很好,这种集成框架可以插入用不同语言和不同环境/组件编写的相同测试套件测试中。 有没有人知道朝这个方向发展的工具或框架? 如果没有,对这类问题有什么好处?

如何将Spring整合到黄瓜中

我目前正在尝试将Spring集成到我的Cucumber测试中。 我有一个自定义的SpringFactory,如下所述: http://www.zsoltfabok.com/blog/2012/01/cucumber-jvm-di/ 但是代码没有被调用。 用我的测试“连接”工厂的最佳方法是什么? [澄清删除回答的评论:主要问题是我的测试有Cucumber作为主要运行者,即@RunWith(Cucumber.class)所以不能在这里使用SpringJUnit4ClassRunner。 这在上面的链接中描述,但没有描述如何读取cucumber.xml。 我添加了一个新的SpringFactory,但它没有读取XML文件….] 更新:实际上还有一点补充: info.cukes cucumber-spring 1.0.0.RC15 但是,由于测试由Cucumber运行,我有@Autowired变量没有被注入。 有没有其他人有这个问题?

@Before不会在java Cucumber Step中执行

我有一个Cucumber Step类,我正在尝试初始化所有场景的页面模型。 所以我添加了一个@Before带注释的方法: @Before() private void beforeScenario() { LOGGER.info(“Running before!”); loginPage = BrowserDriver.getPageModel(LoginPage.class); } 然后,我有一堆依赖于loginPage设置的步骤。 例如 @When(“^I click the help link$”) public void I_click_the_help_link() { loginPage.clickHelpLink(); } 我有多个Step类。 上述两种方法都在同一个Step类中。 但是loginPage始终为null。 永远不会调用beforeScenario方法。 我是否完全误解了@Before是如何工作的? 关于如何获得我想要的工作的任何提示? 编辑:我还有一个@After带注释的方法,它可以按照预期在每个场景之后运行。 编辑:Pom可以在http://pastebin.com/PJ6qQRK9上看到

AfterAll全球钩黄瓜-jvm

我在集成测试中使用了cucumber-jvm ,我需要在所有场景完成后执行一些代码,只需执行一次。 在仔细阅读了这样的post并回顾了这个报道的问题之后 ,我完成了这样的事情: public class ContextSteps { private static boolean initialized = false; @cucumber.api.java.Before public void setUp() throws Exception { if (!initialized) { // Init context. Run just once before first scenario starts Runtime.getRuntime().addShutdownHook(new Thread() { @Override public void run() { // End context. Run just once after all scenarios are finished } }); […]

额外的记录JBehave

场景是这样的: 我们使用JBehave和Selenium进行系统,集成和端到端测试。 我正在检查超过20个值的页面上的计算结果以进行validation。 使用Junit断言整个测试将在其中一个值不正确的第一个实例上失败。 我想要做的是,如果一个断言失败,那么测试继续执行,这样我就可以在一次测试运行中整理所有不正确的值,而不是多次测试运行。 为此,我捕获断言并将未通过validation的任何内容写出到日志文件中。 这给我留下了几个问题: 1)我写出断言失败的日志文件不包含发生exception时正在运行的JBehave Story或Scenario的名称。 2)JBehave Story或Scenario被列为’通过’,我希望它被列为’失败’。 有没有办法可以将Story和Scenario的名称记录到附加日志文件中,或者将其他日志记录写入JBehave日志文件? 如何将Story / Scenario标记为失败? 在JBehave配置中,我有: configuredEmbedder() .embedderControls() .doIgnoreFailureInStories(true) .doIgnoreFailureInView(false) .doVerboseFailures(true) .useStoryTimeoutInSecs(appSet.getMaxRunningTime()); 和 .useStoryReporterBuilder( new StoryReporterBuilder() .withDefaultFormats() .withViewResources(viewResources) .withFormats(Format.HTML, Format.CONSOLE) .withFailureTrace(true) .withFailureTraceCompression(true) .withRelativeDirectory(“jbehave/” + appSet.getApplication())

是否可以一起使用DDD和BDD?

我喜欢用DDD实现的中间开发。 开发是由域,应用程序中最可靠的部分驱动的。 我们不依赖于基础设施,持久性和演示。 听起来不错。 但它没有商业价值。 这是以业务为中心的BDD与外部开发。 我们没有前期域设计(选择实体,值对象,聚合)。 我们收集用户故事,编写一些场景并逐个实现。 我们从应用程序的最多变的部分开始开发 – 从演示开始。 我讨厌写脆弱的验收测试。 你呢? 所以,如果有人在这里有关于在BDD风格中应用DDD的成功故事,请与我分享一些:) 你是否为了演示而编写那些脆弱的测试? 在为实现的用户故事创建域的一部分之前,您是否预先设计了一些设计? 或者你在实施故事后重构DDD模式? 任何帮助将不胜感激。 谢谢!

一步一步的JBehave设置教程非常简单?

虽然我已经阅读了许多关于如何使用JBehave的文章,但我无法让它工作。 这是我到目前为止所经历的步骤: 创建了新的Java Project 下载了JBehave JAR文件版本3.6.8并将其添加到我的构建路径库中 在我的工作区中的测试源文件夹下创建了一个名为com.wmi.tutorials.bdd.stack.specs的包 将JBehave JAR文件添加到我的构建路径库配置中 在上述包中创建了一个JBehave故事(StackBehaviourStories.story) 在上面提到的包(StackBehaviourStory.java)中创建了一个Java类 在上面提到的包(StackBehaviourSteps.java)中创建了一个Java类 导入了我的Java类中的Given,Named,Then,When annotations 在我的JBehave故事文件中写了两个不同的场景 仍然,我无法让它工作/运行! =( 故事档案: Narrative: In order to learn to with JBehave using Eclipse As a junior Java developer though senior in .Net and in BDD I want to define the behaviour of a custom stack Scenario: I push an item […]