如何将ant参数传递给junit / selenium测试?

时间:2013-06-18 13:33:03

标签: java ant webdriver selenium-webdriver junit4

在我提出问题之前,请允许我说,我已经阅读了这些相关问题:

以下是我要完成的事情:

  1. 调用ant脚本,如:ant -Dhost="ip addy" -Dbrowser="chrome"
  2. ant脚本中的
  3. 将属性设置为arg1和arg2
  4. 在webdriver测试调用中System.getProperty("key");并使用这些值来确定加载的驱动程序。
  5. 这就是我现在所拥有的:

    来自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。任何帮助将不胜感激!

    感谢!!!!!

2 个答案:

答案 0 :(得分:1)

没有名为arg1arg2的媒体资源。相反,请按名称引用用户属性:

<!-- 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();

乍得再次感谢您的帮助!