在我提出问题之前,请允许我说,我已经阅读了这些相关问题:
以下是我要完成的事情:
ant -Dhost="ip addy" -Dbrowser="chrome"
System.getProperty("key");
并使用这些值来确定加载的驱动程序。 这就是我现在所拥有的:
来自build.xml的
<!-- language: lang-xml -->
<!-- TARGET: Run JUNIT Tests depends on remove and compile-->
<target name="junit" depends="remove,compile">
<!-- remove junit dir -->
<delete dir="${junit.output.dir}"/>
<!-- make junit dir -->
<mkdir dir="${junit.output.dir}"/>
<junit fork="yes">
<formatter type="xml"/>
<formatter type="plain" usefile="false"/>
<sysproperty key="host" value="${arg1}"/>
<sysproperty key="browser" value="${arg2}"/>
<test name="${test.dir}.TestMyTest" todir="${junit.output.dir}"/>
//.......
setup()中的java代码:
if (System.getProperty("browser").equals("firefox")) {
log.logInfo("Firefox driver initialized");
driver = new FirefoxDriver();
} else if (System.getProperty("browser").equals("ie") //....
当我执行ant -Dhost=ip -Dbrowser=firefox
时,我正在获得NPE。我假设它与我的构建脚本和设置这些属性有关。我的印象是我错了。
[junit] Testcase: testMyTest took 0.001 sec
[junit] Caused an ERROR
[junit] null
[junit] java.lang.NullPointerException
[junit] at tests.TestMyTest.setUp(Unknown Source)
[junit]
我的假设是System.getProperty("browser")
返回null。任何帮助将不胜感激!
感谢!!!!!
答案 0 :(得分:1)
没有名为arg1
和arg2
的媒体资源。相反,请按名称引用用户属性:
<!-- Verify the properties exist. -->
<fail unless="host"/>
<fail unless="browser"/>
<junit fork="yes">
<!-- ... -->
<sysproperty key="host" value="${host}"/>
<sysproperty key="browser" value="${browser}"/>
<!-- ... -->
</junit>
答案 1 :(得分:0)
在@Chad Nouis的帮助下弄清楚我自己的编码错误现在已经解决了。
Properties sys = new Properties();
应该是:
Properties sys = System.getProperties();
乍得再次感谢您的帮助!