我正在研究基于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
请建议,为什么会发生这种情况以及如何纠正这个问题? 我被困在上面,任何帮助都将受到赞赏。
答案 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