QF-Test добавляет неверные свойства в тестируемую систему - PullRequest
0 голосов
/ 26 октября 2018

В настоящее время я пытаюсь протестировать пользовательский интерфейс приложения Eclipse RCP.При выполнении вручную приложение запускается нормально и может использоваться правильно.Тем не менее, когда QF-Test запускает приложение, я получаю ClassCastException в модуле 3pp:

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 (см. Этот ответ ).Однако QF-Test добавляет 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

Я хотел бы удалить эти неправильные значения свойств.Я уже пытался определить их вручную как параметры вызова командной строки QF-Test, но безуспешно.

Некоторая помощь будет очень полезна.

Ответы [ 2 ]

0 голосов
/ 28 октября 2018

Такое поведение QF-Test было исправлено с помощью QF-Test 4.2.1 (выпущено 26 февраля 2018 г.), см. https://www.qfs.de/en/qf-test-manual/lc/manual-en-history.html#sec_N1D715:

Bug fixed:

In a few cases a broken system property set by QF-Test could interfere with SUT startup.

Таким образом, ответ заключается в простом обновлении вашего QF-Test.!

0 голосов
/ 26 октября 2018

К сожалению, я не знаю исправления для QF-Test. Если возможно, я рекомендую обходной путь, чтобы исправить свойства перед использованием.

    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()));
        }
    }
...