我对jbehave甚至是自动化测试都是全新的。 我在线阅读了一个教程,并尝试按照这些步骤进行操作。
我正在尝试在eclipse IDE中运行此应用程序。
我创建了一个包含测试的Math.story文件:
Scenario: 2 squared
Given a variable x with value 2
When I multiply x by 2
Then x should equal 4
在名为ExampleSteps.java的.java文件中,执行了以下步骤:
import org.jbehave.core.annotations.Given;
import org.jbehave.core.annotations.Named;
import org.jbehave.core.annotations.Then;
import org.jbehave.core.annotations.When;
import org.jbehave.core.steps.Steps;
public class ExampleSteps extends Steps {
int x;
@Given("a variable x with value $value")
public void givenXValue(@Named("value") int value) {
x = value;
}
@When("I multiply x by $value")
public void whenImultiplyXBy(@Named("value") int value) {
x = x * value;
}
@Then("x should equal $value")
public void thenXshouldBe(@Named("value") int value) {
if (value != x)
throw new RuntimeException("x is " + x + ", but should be " + value);
}
}
我创建了另一个具有main方法的类SimpleJbehave: import java.util.Arrays; import java.util.List;
import org.jbehave.core.embedder.Embedder;
public class SimpleJBehave {
private static Embedder embedder = new Embedder();
private static List<String> storyPaths = Arrays
.asList("Math.story");
public static void main(String[] args) {
embedder.candidateSteps().add(new ExampleSteps());
embedder.runStoriesAsPaths(storyPaths);
}
}
当我运行此代码时,我得到以下异常:
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/collections/Transformer
at org.jbehave.core.configuration.Configuration.<init>(Configuration.java:112)
at org.jbehave.core.configuration.MostUsefulConfiguration.<init>(MostUsefulConfiguration.java:49)
at org.jbehave.core.embedder.Embedder.<init>(Embedder.java:30)
at org.jbehave.core.embedder.Embedder.<init>(Embedder.java:37)
at SimpleJBehave.<clinit>(SimpleJBehave.java:8)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.collections.Transformer
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 5 more
由于我是新手,我无法理解究竟是什么问题。
如果有人可以告诉我应该怎样做才能让这段代码正常工作真的很棒。 我的做法错了吗?
非常感谢你。
答案 0 :(得分:1)
您的类路径上似乎没有org.apache.commons.collections.Transformer
。看起来这个类在apache-commons-transformer库中可用:http://commons.apache.org/collections/api-release/org/apache/commons/collections/Transformer.html
下载jar并将其添加到类路径中。它可能会奏效。