有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

eclipse在java中运行带有SeleneTestCase的ANT。lang.NoClassDefFoundError

好的,我想弄清楚为什么在我的ANT构建过程中,当我试图运行一个扩展了SeleneTestCase的类时junit会失败。我可以在没有问题的情况下手动运行测试。只有当我尝试用ANT构建并运行它时,我才会遇到这个问题

我正在Mac上使用Eclipse,其最新版本为:

selenium-java-client-driver-test.jar

selenium-java-client-driver.jar

selenium-server-standalone-2.0a7.jar 

它们在我的全局设置中的ANT全局设置下被引用,并在我的SeleneTestCase类中正确导入(我可以无问题地手动运行testSuite.RegressionTest,以及测试类本身)。所以在某个地方我忽略了ANT和Selenium之间的联系

任何援助,或进一步的尝试都将受到极大欢迎

如果你去过圣地亚哥(我请客喝酒!!!非常严肃:)

这是我的控制台输出:

[junit] Testsuite: testSuite.RegressionTest
[junit] Tests run: 1, Failures: 0, Errors: 1, Time elapsed: 0 sec
[junit] Null Test:  Caused an ERROR
[junit] null
[junit] java.lang.reflect.InvocationTargetException
[junit] Caused by: java.lang.NoClassDefFoundError: com/thoughtworks/selenium/SeleneseTestCase
[junit]     at java.lang.ClassLoader.defineClass1(Native Method)
[junit]     at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
[junit]     at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
[junit]     at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
[junit]     at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
[junit]     at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
[junit]     at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
[junit]     at java.security.AccessController.doPrivileged(Native Method)
[junit]     at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
[junit]     at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
[junit]     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
[junit]     at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
[junit]     at testSuite.RegressionTest.suite(Unknown Source)
[junit] Caused by: java.lang.ClassNotFoundException: com.thoughtworks.selenium.SeleneseTestCase
[junit]     at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
[junit]     at java.security.AccessController.doPrivileged(Native Method)
[junit]     at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
[junit]     at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
[junit]     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
[junit]     at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
[junit] Test testSuite.RegressionTest FAILED

更新:您可以看到Selenium。jar文件已加载

[javac][类文件的搜索路径:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/jsfd.jar,/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/Classes.jar

。。。[删除了不相关的已加载类]

/Applications/eclipse/plugins/junit-4.8.2。jar、/Applications/eclipse/plugins/seleniumjava客户机驱动程序测试。jar、/Applications/eclipse/plugins/selenium java客户端驱动程序。jar,/Applications/eclipse/plugins/selenium-server-standalone-2.0a7。jar]

。。。[删除了不相关的已加载类]


共 (1) 个答案

  1. # 1 楼答案

    看起来不是硒,而是蚂蚁让你头痛。你用的是什么版本的蚂蚁

    这听起来绝对像是ant可能产生的类路径问题。我花了很多时间试图弄明白为什么我的构建不起作用,结果却发现在我的任务运行时加载了其他一些类路径变量。当我显式调用新版本时,我甚至不幸加载了旧版本的ant(隐藏在Weblogic的深处)。那是我生命中浪费的4个小时

    我的建议是在ant脚本中创建一个classpath变量,显式地命名要使用的JAR,并使用“-v”(表示详细)运行ant任务,以查看在运行时真正加载的内容

    俗话说:“如果闻起来像鸭子,走路像鸭子,大便像鸭子,那么你很可能有一只鸭子。”