我试图在我的项目中实现BDD,我也使用Jbehave,我参考了可用的在线材料,我创建了故事文件、Steps类和Runner类,如下所示,但我得到了一些奇怪的异常,我无法解决它。
1)故事文件,'sample.Story'
Narrative:
In order to communicate effectively to the business some functionality
As a development team
I want to use Behaviour-Driven Development
Scenario: A scenario is a collection of executable steps of different type
Given I type Hello
When Hit Enter
Then It prints Hellows
package com.kar.features;
import org.jbehave.core.annotations.Given;
import org.jbehave.core.annotations.Then;
import org.jbehave.core.annotations.When;
public class SampleSteps {
@Given("I type Hello")
public void TypeHello(){
System.out.println("welcome to Cucumber");
}
@When ("Hit Enter")
public void SetBalanceToZero(){
System.out.println("Inside the 'Enter' section");
}
@Then ("It prints Hellows")
public void addAmount(){
System.out.println("I'm at the end");
}
}
package com.kar.features;
import org.jbehave.core.configuration.Configuration;
import org.jbehave.core.configuration.MostUsefulConfiguration;
import org.jbehave.core.junit.JUnitStory;
import org.jbehave.core.steps.InjectableStepsFactory;
import org.jbehave.core.steps.InstanceStepsFactory;
public class Sample extends JUnitStory {
@Override public Configuration configuration() {
return new MostUsefulConfiguration();
}
@Override public InjectableStepsFactory stepsFactory() {
return new InstanceStepsFactory(configuration(),
new SampleSteps());
}
}
但是如果我使用Junit运行Runner类,我会得到
java.lang.NoClassDefFoundError: com/thoughtworks/paranamer/Paranamer
at org.jbehave.core.embedder.Embedder.<init>(Embedder.java:50)
at org.jbehave.core.embedder.Embedder.<init>(Embedder.java:60)
at org.jbehave.core.ConfigurableEmbedder.<init> (ConfigurableEmbedder.java:40)
at org.jbehave.core.junit.JUnitStory.<init>(JUnitStory.java:16)
at com.kar.features.Sample.<init>(Sample.java:9)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:408)
at org.junit.runners.BlockJUnit4ClassRunner.createTest(BlockJUnit4ClassRunner.java:195)
at org.junit.runners.BlockJUnit4ClassRunner$1.runReflectiveCall(BlockJUnit4ClassRunner.java:244)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.BlockJUnit4ClassRunner.methodBlock(BlockJUnit4ClassRunner.java:241)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)
Caused by: java.lang.ClassNotFoundException: com.thoughtworks.paranamer.Paranamer
at java.net.URLClassLoader$1.run(URLClassLoader.java:372)
at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:360)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 27 more
如果有人能帮我解决这个问题,那就太好了。
通常,JBehave为story Runner使用匹配模式。它在类名中查找Test。它可以在maven中显式配置,如下所示:
<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.11</version>
<configuration>
<includes>
<include>**/*Test.java</include>
<include>**/Test*.java</include>
<include>**/When*.java</include>
<include>**/*TestSuite.java</include>
</includes>
<argLine>-Xmx512m</argLine>
<parallel>classes</parallel>
<systemPropertyVariables>
<webdriver.driver>${webdriver.driver}</webdriver.driver>
</systemPropertyVariables>
</configuration>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
</plugin>
我试图创建一起使用JBehave和TestNG的概念验证。我想做的是在多个线程中同时运行一个故事,以测试我的代码的线程安全性。 我有一个简单的类,它只做一件事,在给定的整数值上计算模7。我已经为这个类创建了一个简单的BDD测试。我已经按照JBehave“入门”文档中的描述设置了BDD测试。唯一的区别是,在我的JUnitStory文件中,我没有使用JUnit的@Test注释,而是使用了TestNG的
因此,这是我第一次使用JBehave,我试图在项目中创建第一个JBehave,但目前似乎测试没有执行这些步骤。最后,测试表明所有测试用例都通过了,没有任何问题,但实际上它们根本没有被执行。我在每个步骤方法中都设置了断点,而且我的调试器根本不会阻止我,更不用说这些步骤当前抛出的异常了。 和测试执行器: 你知道有什么问题吗?
我终于成功地让Maven使用一个汇编文件压缩一堆JAR,并将其安装到我的本地存储库中。这已经够难的了... 下面是第二个项目的POM。不幸的是,它没有下载RigFocusOnDataHub的zip文件,而是从本地repo中获取所有RigFocusOnDataHub依赖项的JAR。
我昨晚睡觉时所有的测试都出现了,今天重新加载了项目,无论我怎么尝试,VS测试运行程序都没有得到任何东西。 昨天,当我加载项目时,我遇到了类似的问题,但通过添加对Microsoft.DotNet.内部成就的引用来解决它 - 正如这篇文章所建议的那样:链接。但是,即使有参考文献,它现在也在做同样的事情。我现在也尝试了帖子中的几乎所有答案,但无济于事。 我已经与一个基本的控制台项目进行了比较,除了包含的
Visual Studio 2015 企业更新 3,所有 KB 程序包更新均已应用 再播 2016.1.2, 最新 根据我的文件引用是; 当我尝试使用ReSharper xUnit测试运行器时,我遇到了:; 单元测试运行程序无法运行测试,无法运行xUnit测试-未找到文件:“D:\srcs\GitProjects..etc\bin\My.tests”。dll“参数名称:assemblyFileNa