2015-04-04 35 views
0

我的应用程序是基于java swing技术开发的,我们试图使用基于windows和dll的商业工具自动化它,但该工具无法等到所有的swing事件/工作线程完成处理...我有一个需要去阅读和监视我的应用程序线程/事件处理完成状态,然后再转移到下一个操作?如何从java命令promt读取java swing线程,事件完成状态

请帮我一些示例代码从命令提示符

另一个罐子/在简单的话读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'打开文件,这样frankenstein记录器就会打开并且能够记录动作。但是想在eclipse中编写测试并执行..

+1

我不知道别人,但我对你的要求和问题很困惑。考虑通过提供更多的细节和解释以及可能的一些相关的代码来澄清你的问题,如果可能的话,最好是[最小示例程序](http://stackoverflow.com/help/mcve)。 – 2015-04-04 16:15:59

+0

简单的说,如何从另一个java程序中读取java swing应用程序线程/进程完成状态?我们正在使用https://github.com/vivekprahlad/frankenstein来自动化我们的应用程序......这个文件非常少,如何启动应用程序和执行测试...... – SAM 2015-04-04 17:09:22

+0

@HovercraftFullOfEels我是eclipse和java程序的中间人.. 。我们所要做的就是使用frankenstein自动化单元测试用例。需要关于如何从示例代码开始的帮助... 1.如何从frankenstein开始我的应用程序,我的应用程序将从bat文件开始,我添加了'com .thoughtworks.frankenstein.application.PipingMain com.abc.app.tone.all.Launcher'为bat文件,这样frankenstein记录器将打开并且能够记录动作。但是想在eclipse中写一个测试并执行.. – SAM 2015-04-04 17:17:01

回答

2

一种方法是让你的SwingWorker后台任务单独测试。使用此example,在done()的实施中设置适当的exit()状态。在下面的示例中,如果计算的值在定义的容差范围内,则代码将按惯例标记为成功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(); 
    } 
}