Программа тестирования Java - PullRequest
1 голос
/ 06 октября 2011

Я написал программу, и теперь мне нужно написать «исполняемый тестовый скрипт», чтобы протестировать ее.

Полагаю, что работающий тестовый скрипт означает основной метод.

Но все вызовы программы запускаются при нажатии кнопки мыши или при вводе с OptionPane. Итак, как мне написать работающий тестовый скрипт для управления щелчком мыши?

Я не знаю, правильно ли я описал проблему. Программа представляет собой инструмент управления задачами проекта, поэтому вы можете нажать кнопку, чтобы создать новый проект, сохранить проект, добавить задачи, добавить сотрудников и так далее. Проблема в том, как мне контролировать, какую кнопку нажимать по коду Java?

Вот метод, который вызывается при нажатии кнопки:

public void newProject() {
    if (currentProject == null || showConfirm(
            "The current progress will not be saved.\nContinue?")) {

        resetCurrentProject();
        //Get the name of the new project
        String name = JOptionPane.showInputDialog(this, 
                "Please give a name to the project", "New Project", 
                JOptionPane.QUESTION_MESSAGE);

        if (name != null) {

          //Initialize the a new project
            ArrayList<Task> taskList = new ArrayList<Task>();
            ArrayList<Staff> staffList = new ArrayList<Staff>();

            //Create a new Project instance
            try {
                currentProject = new Project(name, staffList, taskList);
            } catch (Exception e1) {
                showError(e1.getMessage());
            }

            //Update the project information panel        
            updateProjectInfoPane();
        }
    }
}

Ответы [ 3 ]

1 голос
/ 06 октября 2011

Если бы я писал это, я бы отделил интерфейс от логики.Таким образом, мои кнопки просто вызывают базовые классы, мои дисплеи вызывают базовые классы, и я могу сделать так, чтобы мой тестовый скрипт просто вызывал базовые классы!

Считайте, что это не свинг, а некоторыедругой тип интерфейса.Пример, который я привел, довольно неудачен, потому что все, что он делает - это приращение.Но идея состоит в том, что любая логика, которую имеет Incrementer, теперь инкапсулирована в классе.Это означает, что он может быть легко протестирован, расширен и модифицирован при необходимости.

// bad
class GUI {
    Button b = new ...
    int i = 0;
    TextArea t = new ...

    // bad code
    actionPerformed(Button b) {
        if(b == this.b) i++; // on button press increment
    }
    // whatever, you get the idea
    paint(Graphics g) {
        t.setText(i + "");
    }

}

// good code
class GUI {
    Button b = new ...
    int i = 0;
    TextArea t = new ...

    // bad code
    actionPerformed(Button b) {
        if(b == this.b) i.increment(); // on button press increment
    }
    // whatever, you get the idea
    paint(Graphics g) {
        t.setText(i.toString());
    }

}

class Incrementer {
    int value;
    void increment() { value++; }
    public String toString() { return Integer.valueOf(value); }
}
1 голос
/ 06 октября 2011

Простое объяснение: вместо фактического управления мышью, вы получаете ссылку на кнопку, на которую хотите эмулировать щелчок.После того, как у вас есть ссылка на JButton (при условии Swing), вы можете вызвать на нем doClick() (http://download.oracle.com/javase/6/docs/api/javax/swing/AbstractButton.html#doClick%28%29).

). Для JOptionPane я понятия не имею, так как никогда не использовал его и не знаю, что он делает, но документацию можно найти здесь независимо от: http://download.oracle.com/javase/6/docs/api/javax/swing/JOptionPane.html

0 голосов
/ 06 октября 2011

Нажатие кнопок (т. Е. GUI) - не та вещь, которую вы должны тестировать (широко). Оставьте это тестерам - они либо тестируют это вручную, либо автоматизируют (Selenium, QTP).

Полагаю, вам нужно написать несколько юнит-тестов ...? В этом случае просто напишите тест для каждого из ваших методов и выполненной работы. Вы не должны тестировать интерфейс, а просто логику. Например, протестируйте ваш метод newProject (), написав модульный тест, который проверяет, правильно ли был инициализирован новый проект. Итак, из вашего тестового метода вы вызываете newProject () и утверждаете, был создан новый экземпляр проекта или нет.

Приличный урок: http://www.michaelminella.com/testing/unit-testing-with-junit-and-easymock.html

Тестирование графического интерфейса - выполняйте простые проверки самостоятельно (нажимая вручную) и передавайте их тестировщикам. Если вы не работаете с какими-либо тестерами, то, боюсь, у вас есть возможность: 1. продолжать тестирование вручную после любых существенных изменений, 2. рассмотреть возможность использования Selenium http://seleniumhq.org/ или любого другого инструмента автоматизации.

НТН, Дам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...