Javac编译一个完整的项目与Selenium for Jenkins



背景:我使用jUnit运行Selenium测试。我想让詹金斯每晚都做测试。我可以每晚拉我的测试/源文件,我可以构建和安装我的产品。我试图在linux虚拟机上使用Jenkins中的"执行Shell"选项构建java测试文件。

我有一个Java项目,它由一个共享的Utility项目、selenium jar以及我的源文件和测试文件组成。我可以在NetBeans中运行selenium测试而不会出现问题。

代码的布局如下:

公用事业项目:

src
-> utilities
    -> UtilityFunctions.java
    -> Logger.java

我的项目

misc
-> XmlConfigFileForTest.xml
-> PasswordFileForTest.txt    
src
-> objects
    -> User.java
    -> ConfigFile.java
test
-> coreTest
    -> coreTest1.java
    -> coreTest2.java
-> setupTest
    -> setupTest1.java
    -> setupTest2.java
-> testSuites
    -> runAllSetupTests.java

我不知道如何运行javac,这样它就会生成一个我可以用来运行测试的jar。

我已经试过了:

使用如何设置javac环境变量,以便能够找到导入的包?我能够包含我的selenium jar。

一旦我的代码被编译,我相信我可以运行测试,如如何从命令行运行JUnit测试用例。

我最新的javac是:

javac -classpath selenium-java.jar:selenium-server-standalone.jar -sourcepath code -d build/classes code/test/testSuites/runAllSetupTests.java

这是目前失败的,因为它找不到包'objects'。我非常有限的理解是,尝试javac文件应该导致它拉入所有包含的文件。

问题1:是否有一种方法可以将javac(或其他标准程序)指向像这样的结构化项目并从中取出jar ?问题2:有没有更好的方法?我严格这样做是为了使用jenkins每晚运行我的selenium测试。我不赞成用javac来编译它。

编辑:

当前尝试使用Ant而不是直接使用javac。添加了用于附加输入的标记。

我能想到的一件事是,你可以继续使用javac来做到这一点但不是在命令行中添加。jar依赖项,如selenium jars等而是使用。sh文件,它将设置环境变量,如:

CLASSPATH=:./Number1.jar:./Number2.jar:./Number3.jar ...
export CLASSPATH

按以下方式添加所有依赖的jar文件,并且在运行任何javac命令之前只需调用此.sh文件。

,

setpath.sh 
javac -classpath <mention only .class required from the project to commplie this file> JavaFile1.java
javac -classpath <mention only .class required from the project to commplie this file> JavaFile2.java
javac -classpath <mention only .class required from the project to commplie this file> JavaFile3.java ...
.
.
javac -classpath <mention only .class required from the project to commplie this file> MainJavaFile.java
Java -classpath <all class file required> MainJavaFile

这在我的项目中对我来说很好,不应该有任何需要转换为可执行的jar。只需要找出依赖的。class文件。

希望这对你有帮助!

在没有深入研究项目具体细节的情况下,我研究并使用了ant来编译我的项目。最后,不需要一直到JAR。蚂蚁让做罐子变得很容易,所以它也做了。创建的jar不是可执行的,因为项目的存在是为了运行selenium,因此没有真正的"main"要执行。

我没有使用Warman的答案,因为我可以假设项目会增长,并且我不想在开发过程中使用每个新文件更新构建以进行测试。

我将这两个项目作为单个项目导入IntelliJ,并重新构造结果代码,以便我可以将正确的目录标记为代码根目录和测试根目录。我还添加了selenium服务器和java jar作为项目的一部分(而不是在我的机器上存在的库),以便IntelliJ在编译时能够使用它们。

然后我使用IntelliJ的Generate Ant Build来创建一个默认脚本。这在几天的过程中进行了调整,以排除/包含需要在适当位置的更特定的文件,并使用Jenkins slave的环境。

对于将来发现这个问题的任何人:研究Ant并手工创建脚本。合并两个项目、编译、jar和运行junit测试的单个ant脚本大约有250行,真正了解ant的人可以减少这段代码。

好运。

我也在研究同样的问题:)

这个过程对我很有效:创建一个新的main方法,通过eclipse直接创建jar文件,当您有了您的文件时,您可以通过cron作业调度它。

这肯定有效。

相关内容

  • 没有找到相关文章

最新更新