2012-07-17 55 views
0

我刚开始使用JUnit。我跑我的测试通过Intelij想法,它是一切正常,但当我试图用这个代码来运行我的测试中终端:在终端中运行我的Junit测试

java -cp /junit4.10/junit-4.10.jar:. /Users/maidini/IdeaProjects/HelloWorld/test/CalculatePriceTest.java 

我收到此错误:

Exception in thread "main" java.lang.NoClassDefFoundError: /Users/maidini/IdeaProjects/HelloWorld/test/CalculatePriceTest/java 
Caused by: java.lang.ClassNotFoundException: .Users.maidini.IdeaProjects.HelloWorld.test.CalculatePriceTest.java 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 

你有什么想法应该怎么做才能在终端上成功运行我的测试?我也在使用Mac Lion。

回答

4

您首先必须使用javac编译您的代码;在您的类路径中加载.java源文件不起作用。记住要添加你的单元测试类和你正在测试的实际类。以及他们可能拥有的任何依赖关系。也许你会想将它们捆绑在.jar文件中,所以你的命令行不会太长。另外,每次更改代码或测试时都不要忘记重新编译。

这可以很快得到毛茸茸的。相反,我建议您使用构建工具,如Maven。使用适当的Maven构建,您只需键入mvn test,Maven将处理依赖项,编译并为您运行测试。

如果您不想使用Maven,您还可以查看Ant(最好与Ivy)或Gradle或任何其他Java构建工具。

+0

我已经编译了类,它很好,但仍然得到了同样的错误 – MaryamAyd 2012-07-17 09:37:05

+0

同意使用Maven(或任何其他构建工具)。 @MaryamAyd,你确定你知道你在用你的命令做什么吗?你正在运行你的类作为一个Java应用程序,但不运行任何单元测试 – 2012-07-17 09:37:45

+0

@MaryamAyd你也应该参考你想执行的类,而不是它定义的文件。所以如果你的类居住在包'com.maryamayd ',你应该在命令行上放置'com.maryamayd.CalculatePriceTest'而不是'/ Users/maidini/IdeaProjects/HelloWorld/test/CalculatePriceTest.java'。虽然这可能不起作用,因为它没有“主要”方法。请使用适当的构建工具。 – jqno 2012-07-17 09:41:47