使用junit测试scala类
我试图在scala中实现一个简单的堆栈,并使用junit和scalatest对其进行测试,以了解其中的差异。然而,我遇到了一些问题 下面是scala类:使用junit测试scala类,scala,junit,Scala,Junit,我试图在scala中实现一个简单的堆栈,并使用junit和scalatest对其进行测试,以了解其中的差异。然而,我遇到了一些问题 下面是scala类: class Stack[T] { var list: List[T] = Nil def push(x : T) { list = x :: list } def pop() : T = { val head = list.head list = list.tail he
class Stack[T] {
var list: List[T] = Nil
def push(x : T) { list = x :: list }
def pop() : T = {
val head = list.head
list = list.tail
head
}
def isEmpty(): Boolean = list == Nil
}
我用scalac编译了它,并尝试从普通java junit类调用它,如下所示:
public class StackTests {
@Test
public void testPush(){
Stack<String> s = new Stack<String>();
}
}
错误信息非常清楚,但我不知道如何修复它。我是否必须以某种方式引用java测试类中的不可变列表?
list
、Nil
和::
都在Scala标准库中,所以请将其放在类路径中。谢谢,您能给出一个这样的示例吗?我是scala新手,我甚至不知道标准库在哪里。找到了。因为我使用的是自制软件,所以它位于:/usr/local/cillar/scala/2.11.2/libexec/lib/scala-library.jar。
java -cp ../junit/junit.jar:../junit/hamcrest-core.jar:. org.junit.runner.JUnitCore StackTests
...
There was 1 failure:
1) testPush(StackTests)
java.lang.NoClassDefFoundError: scala/collection/immutable/List
at StackTests.testPush(StackTests.java:9)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
...