0

在我问我的问题之前,让我说,我已经阅读了这些相关问题:

这是我想要完成的事情:

  1. 调用 ant 脚本,如: ant -Dhost="ip addy" -Dbrowser="chrome"
  2. 在 ant 脚本中将属性设置为 arg1 和 arg2
  3. 在 webdriver 测试调用中,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。任何帮助将不胜感激!

谢谢!!!!!

4

2 回答 2

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>
于 2013-06-18T14:09:47.463 回答
0

在@Chad Nouis 的帮助下找出了我自己的编码错误,现在已经解决了。

Properties sys = new Properties();

本来应该:

Properties sys = System.getProperties();

乍得再次感谢您的帮助!

于 2013-06-18T16:22:01.693 回答