背景:我正在使用jUnit来运行Selenium测试。我试图将我的测试设置为每晚与Jenkins一起运行。我能够每晚提取我的测试/源文件,我可以构建和安装我的产品。我正在尝试使用" Execute Shell"来构建java测试文件。关于linux vm的Jenkins选项。
我有一个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。
我尝试过:
使用How to set environment variables for javac to be able to find imported packages?我能够包含我的硒罐。
编译完代码后,我相信我可以运行像How to run JUnit test cases from the command line这样的测试。
我最新的javac是:
javac -classpath selenium-java.jar:selenium-server-standalone.jar -sourcepath code -d build/classes code/test/testSuites/runAllSetupTests.java
目前这是失败的,因为它找不到包'对象'。我非常有限的理解是,尝试javac文件应该导致它拉入所有包含的文件。
问题1:有没有办法在这样的结构化项目中指出javac(或其他标准程序)并从中获取jar? 问题2:有更好的方法吗?我正在严格执行此操作,每晚与詹金斯一起进行硒测试。我与使用javac编译它的想法没有结合。
编辑:
目前正在尝试直接使用Ant代替javac。添加了额外输入的标签。
答案 0 :(得分:0)
我能想到的一件事是你可以继续使用javac来做到这一点,但不是在命令行中添加.jar依赖项,如selenium jar等,你可以有一个.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文件。
希望这有帮助!
答案 1 :(得分:0)
在没有涉及很多项目特定细节的情况下,我研究并使用ant来编译我的项目。最后,没有必要一直到JAR。 Ant制作一个容易的罐子,它也完成了。创建的jar不是可执行的,因为项目存在运行selenium,因此没有真正的“main”可以执行。
我没有使用Warman的答案,因为我可以假设项目会增长,我不想在开发过程中有一步来更新每个新文件的测试版本。
我将这两个项目作为单个项目导入IntelliJ,并重新构建了生成的代码,以便我可以将正确的目录标记为代码根目录和测试根目录。我还添加了selenium服务器和java jars作为项目的一部分(而不是我框中其他地方存在的库),以便IntelliJ能够在编译时使用它。
然后我使用IntelliJ的Generate Ant Build来创建默认脚本。这在几天的时间内进行了调整,以排除/包含需要使用的更具体的文件并使用Jenkins slave的环境。
.....
对于将来发现此问题的任何人:研究Ant并手动创建脚本。结合两个项目的单个结果ant脚本,编译,jar和运行junit测试是~250行,并且可以由真正了解ant的人减少。
祝你好运。答案 2 :(得分:0)
我正在研究同样的问题:)
这个程序对我有用: 创建一个新的main方法,通过eclipse创建jar文件direclty,当你有文件时,你可以通过cron job安排它。
这肯定有用。