如何进行桌面Java应用程序的自动验收测试?

如何进行桌面Java应用程序的自动验收测试?,java,unit-testing,testing,junit,acceptance,Java,Unit Testing,Testing,Junit,Acceptance,我一直在考虑验收测试,并希望更清楚地了解如何实现自动化(例如,如何将其安装到连续交付管道中)。我有一个用Java编写的桌面应用程序,一个messenger应用程序。如果我想自动化验收测试,我该怎么做?下面是一个手动测试示例:“当服务器崩溃时,用户A正在向用户B发送消息。切换到故障转移服务器,验证聊天可以在中断的位置恢复,并且所有聊天功能仍在客户端中按预期工作” JUnit是否可以像这样用于自动验收和系统测试?我也听说过Selenium,但我推测它只用于web应用程序 我理解使用JUnit进行单元

我一直在考虑验收测试,并希望更清楚地了解如何实现自动化(例如,如何将其安装到连续交付管道中)。我有一个用Java编写的桌面应用程序,一个messenger应用程序。如果我想自动化验收测试,我该怎么做?下面是一个手动测试示例:“当服务器崩溃时,用户A正在向用户B发送消息。切换到故障转移服务器,验证聊天可以在中断的位置恢复,并且所有聊天功能仍在客户端中按预期工作”

JUnit是否可以像这样用于自动验收和系统测试?我也听说过Selenium,但我推测它只用于web应用程序


我理解使用JUnit进行单元测试的概念,但我不知道如何自动化对桌面应用程序功能进行更高级别的测试。一些测试可能涉及与GUI的交互,比如向其他客户端发送消息,但其他测试则涉及服务器端的事情,比如服务器崩溃等等。我一直在想,也许可以使用JUnit和应用程序的代码来实现这一点,也许还需要一些脚本(Perl、Ruby等)来启动测试?

有几种软件解决方案为此付出了代价。一些严重的是QTP(现在的UFT)、TestComplete、Ranorex、SilkTest。他们都应该有试用软件。如果Java应用程序是用Swing/AWT编写的,那么Jemmy可能值得一看。正如Tony Hopkinson提到的,AutoIt可能适合,而且使用速度非常快。Selenium很棒,但据我所知,它只用于web测试。自动化UI对于自动化测试非常重要,并且由于其与最终用户的交互作用,它补充了验收测试。单元测试有很多重叠,可能涵盖功能集成,这取决于您如何组织它们以及是否有足够的功能集成,但它们是两种不同的方法,有两个不同的目的


另外,如果您正在使用Swing,请找到以下可能有帮助的线程:

这可能很难。您可以通过多种方式自动化windows应用程序。从像AutoIt这样的免费软件,到全面且昂贵的测试自动化套件。话虽如此,我希望我的单元测试能够涵盖您描述的所有场景。