我的应用程序是基于java swing技术开发的,我们正在尝试使用构建在windows和dll上的商业工具来自动化它,但该工具无法等到所有swing事件/工作线程完成处理...我有需要去移动到下一个操作之前读取并监视我的应用程序线程/事件进程完成状态吗?
请帮我一些示例代码,从另一个jar /从命令提示符
读取swing应用程序进程简单来说,如何从另一个java程序中读取java swing应用程序线程/进程完成状态?我们使用github.com/vivekprahlad/frankenstein来自动化我们的应用程序...这里有关于如何启动应用程序和执行测试的文档很少......
我是eclipse和java程序的中间人...我们所有的尝试都是使用frankenstein自动化单元测试用例。需要帮助如何开始使用示例代码... 1.如何从frankenstein启动我的应用程序,我的应用程序将从一个bat文件开始,我将'com.thoughtworks.frankenstein.application.PipingMain com.abc.app.tone.all.Launcher'添加到bat文件中,以便frankenstein记录器将打开并能够记录操作。但是想在eclipse中编写测试并执行..
答案 0 :(得分:2)
一种方法是使您的SwingWorker
后台任务可单独测试。使用此example,在exit()
的实施中设置适当的done()
状态。在下面的示例中,如果计算的值在定义的容差范围内,则按惯例将代码标记为0
成功。
命令行:
$ java -cp build/classes Test ; echo $? 1.4142135623730951 0
代码:
import java.util.List;
import javax.swing.SwingWorker;
public class Test {
/** @see https://stackoverflow.com/a/4637725/230513 */
private static class TwoWorker extends SwingWorker<Double, Double> {
private static final int N = 5;
double x = 1;
@Override
protected Double doInBackground() throws Exception {
for (int i = 1; i <= N; i++) {
x = x - (((x * x - 2) / (2 * x)));
setProgress(i * (100 / N));
publish(x);
}
return x;
}
@Override
protected void process(List<Double> chunks) {
for (double d : chunks) {
//…
}
}
@Override
protected void done() {
System.out.println(x);
System.exit((Math.abs(x - Math.sqrt(2))) < 0.00001 ? 0 : 1);
}
}
public static void main(String[] args) {
new TwoWorker().execute();
}
}