通过ANT初始化的Java变量在使用testNG调用测试时未反映出来

时间:2015-01-08 12:19:58

标签: java ant testng

我正在研究基于testNG和ANT的框架。

在build.xml中,我们有:                              

            <delete dir="${test.output}${file.separator}tenantV3Management-cli"/>
            <testng classpathref="jars.classpath"
                    outputdir ="${test.output}${file.separator}tenantV3Management-cli"
                    haltOnfailure="false"
                    listeners="com.oracle.common.CustomReporter"
                    testnames="tenantV3Management-cli">
                <classpath location="${target.test.classes.dir}"/>
                <classpath refid="jars.classpath" />
                <sysproperty key="tempFileLoc" value="${code.build.tempfiles}${file.separator}"/>
                <xmlfileset dir="${basedir}" includes="config${file.separator}settingsCLI.xml"/>
            </testng>
</target>

在Constants.java中,我使用过:

public static boolean isSim3_1Tests=false;

 public static void main(String[] args) {
                String testProp = "SIMV3.1";
                Properties sysProps = System.getProperties();
                testProp=sysProps.getProperty(testProp);
                if (testProp.equals(false)) {
                         isSim3_1Tests = false;
                } else {
                        isSim3_1Tests = true;
                }

        }

我的TestClass.java正在扩展Constants.java 我的测试用例如下:

    @Test(groups = {"tenantV3ManagementTest"}, timeOut = 100000)
    public void testUpgradeTenant() throws IDMMultiTenancyException {
         System.out.println("isSim3_1Tests="+Constants.isSim3_1Tests);
          ...
    }

这里,当调用测试用例时,isSim3_1Tests出现为假,而我在其超类Constants.java的main()中将其设置为true

请建议,为什么会发生这种情况以及如何纠正这个问题? 我被困在上面,任何帮助都将受到赞赏。

1 个答案:

答案 0 :(得分:1)

你永远不会从sysProps中查找任何财产。您只需将字符串 key (应该声明为常量)与Boolean.FALSE进行比较,这将始终为false。

修改:您现在正在查找Properties对象,但结果是String,它永远不会等于Boolean.FALSE。而不是你所拥有的冗余(和错误)构造,使用来自commons-lang的BooleanUtils之类的东西:

Constants.isSim3_1Tests = BooleanUtils.toBoolean(testProp); // and "Constants" is a bad name