能够从IntelliJ运行配置运行JUnitCore测试运行器,但不能形成命令行

时间:2017-05-05 16:09:34

标签: java selenium intellij-idea junit selenide

我正在编写一个程序,使用selenide(4.4.x)和junit(4.12)自动化访问者注册。如果我在IDE中将它们作为JUnit测试运行,测试运行正常,但为了更方便的使用,我想从main / commandline运行它。

我设法让它与IntelliJ运行配置一起工作,但是当我从命令行尝试同样的事情时却没有。基本上,我有一个抽象类来启动和停止Selenium / ide WebDriver,一个包含实际保留逻辑的具体测试类(RegisterVisitorTest.java),以及RunTest.javamain方法。请参阅下面的MWE(切断不相关的代码,因此可能无法执行)。

如果我用:

创建IntelliJ运行配置
-Dselenide.browser=chrome -Dwebdriver.chrome.driver="C:\downloads\chromedriver.exe" -DlastName="Peeters" -DfirstDay="5-5-2017"

作为VM选项,然后执行得非常好并在RunTest.main"," RegisterVisitorTest"中打印"并且它为我填写表单。但是,如果我使用mvn install创建一个jar并将其作为

运行
java -Dselenide.browser=chrome -Dwebdriver.chrome.driver="C:\downloads\chromedriver.exe" -DlastName="Peeters" -DfirstDay="5-5-2017" -cp %junit_path%;target\name-of-jar.jar x.selenide.RunTest

其中`%junit_path%包含对junit.jar和hamcrest.jar的引用,它确实进入main并在RunTest.main"中打印"但它实际上并不运行测试。好消息是我也没有收到错误。

但是,当我从命令行直接将其作为JUnitCore运行符运行时使用:

java -Dselenide.browser=chrome -Dwebdriver.chrome.driver="C:\downloads\chromedriver.exe" -DlastName="Peeters" -DfirstDay="5-5-2017" -cp %junit_path%;target\name-of-jar.jar org.junit.runner.JUnitCore nl.ing.selenide.RegisterVisitorTest

我得到以下输出:

JUnit version 4.12
Exception in thread "main" java.lang.NoClassDefFoundError: org/openqa/selenium/support/events/WebDriverEventListener
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Unknown Source)
        at org.junit.internal.Classes.getClass(Classes.java:16)
        at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:100)
        at org.junit.runner.JUnitCommandLineParseResult.parseArgs(JUnitCommandLineParseResult.java:50)
        at org.junit.runner.JUnitCommandLineParseResult.parse(JUnitCommandLineParseResult.java:44)
        at org.junit.runner.JUnitCore.runMain(JUnitCore.java:72)
        at org.junit.runner.JUnitCore.main(JUnitCore.java:36)
Caused by: java.lang.ClassNotFoundException: org.openqa.selenium.support.events.WebDriverEventListener
        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)
        ... 8 more

困扰我的是,当我从IDE运行它时它运行正常,但是当我从命令行运行main时它不会触发测试,并且当我直接运行测试时它会失败。在我的Maven项目中,我确实有许多红线,但这在大多数情况下似乎并不重要......

无论如何,这似乎归结为上面提到的WebDriverEventListener,但如果我尝试添加WebDriverEventListener,它显然可以找到依赖项并自动添加正确的import语句,但如果我再做一次{{{ 1}}。

我错过了什么吗?

编辑:虽然找不到'班级'在其他SO问题中找到它,它不是所提到的hadoop问题的重复,因为我有正确的环境变量集。

我能够运行其他JAR,而不是这个。

使用Maven程序集插件解决所有依赖项。

MWE(尝试):

mvn install

1 个答案:

答案 0 :(得分:1)

这个例外很简单:类路径缺少某些东西。 java无法找到org/openqa/selenium...类。

你所有的设置都提到junit,hamcrest,......但不是selenium。

长话短说:可能你的IDE在类路径中添加了一个selenium jar而你没有注意到。但是当在命令行上运行时,你需要提供所有所需的元素。硒缺失了。也许你的拥有类也可能。