我目前正在尝试测试Eclipse应用程序的UI。当手动执行时,应用程序将很好地启动,并且可以正确使用。然而,当QF启动应用程序时,我在一个3pp模块中得到一个ClassCastException:
java.lang.ClassCastException: java.io.File cannot be cast to java.lang.String
at com.solarmetric.conf.ConfigurationImpl.fromProperties(ConfigurationImpl.java:560)
at com.solarmetric.conf.ConfigurationImpl.loadDefaults(ConfigurationImpl.java:186)在分析了3pp库的代码之后,我发现当试图将系统的属性值转换为String时会出现异常。这不应该是一个问题,因为所有的属性值都应该是String (参见此answer)。然而,QF添加了3个属性,它们的值为File (java.io.File)对象.更确切地说:
jython.home = C:\Program Files\qfs\qftest\qftest-4.2.0\jython
groovy.home = C:\Program Files\qfs\qftest\qftest-4.2.0\groovy
javascript.home = C:\Program Files\qfs\qftest\qftest-4.2.0\javascript我想删除那些错误的属性值。我已经尝试将它们手动定义为success命令行调用的参数,但没有成功。
如果能提供一些帮助,我们将不胜感激。
发布于 2018-10-28 08:44:04
QF的这种行为是用QF-Test4.2.1修正的(2018年2月26日发布),参见N1D715
Bug fixed:
In a few cases a broken system property set by QF-Test could interfere with SUT startup.因此,答案是简单地更新你的QF-测试!
发布于 2018-10-26 10:37:08
不幸的是,我不知道QF-测试的修复方法。如果可能的话,我建议在使用之前纠正这些属性。
Properties sysProps = System.getProperties();
Properties copyProps = new Properties();
synchronized (sysProps) {
copyProps.putAll(sysProps);
}
Set<Entry<Object, Object>> entrySet = copyProps.entrySet();
for (Entry<Object, Object> entry : entrySet) {
if (!(entry.getKey() instanceof String) || !(entry.getValue() instanceof String)) {
sysProps.remove(entry.getKey());
sysProps.put(String.valueOf(entry.getKey()), String.valueOf(entry.getValue()));
}
}https://stackoverflow.com/questions/53005725
复制相似问题