我已经编写了一个程序,现在我需要编写一个“可运行的测试脚本”来测试它。
我认为可运行的测试脚本意味着主要方法。
但是当鼠标单击按钮或从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();
}
}
}
答案 0 :(得分:1)
简单说明:您可以获得对要模拟单击的按钮的引用,而不是实际控制鼠标。在您引用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
答案 1 :(得分:1)
如果我写这篇文章,我会将界面与逻辑区分开来。这样,我的按钮只是调用底层类,我的显示器调用底层类,我可以让我的测试脚本也调用底层类!
考虑以下情况,好像它不是摆动而是其他类型的界面。我给出的例子相当蹩脚,因为它所做的只是递增。但是这个想法是任何逻辑增量器现在都封装在类中。这意味着必要时可以轻松测试,扩展和修改。
// 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); }
}
答案 2 :(得分:0)
单击按钮(即GUI)不是您应该测试的(广泛)。留给测试人员 - 他们要么手动测试,要么自动测试(Selenium,QTP)。
我猜你需要写一些单元测试......?在这种情况下,只需为每个方法和完成的工作编写测试。你不应该测试前端,而只是测试逻辑。例如,通过编写检查新项目是否已正确初始化的单元测试来测试newProject()方法。因此,从您的测试方法中调用newProject()并断言是否创建了Project的新实例。
一些不错的教程:http://www.michaelminella.com/testing/unit-testing-with-junit-and-easymock.html
GUI测试 - 自己进行简单检查(手动点击)并将其传递给测试人员。如果您不与任何测试人员合作,那么我担心的方法是:1。在任何重大更改后继续手动测试,2。考虑使用Selenium http://seleniumhq.org/或任何其他自动化工具。
HTH, 达莫