如何从命令提示符读取java swing线程,事件完成状态

时间:2015-04-04 16:11:44

标签: java multithreading swing

我的应用程序是基于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中编写测试并执行..

1 个答案:

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