Java 尝试使用robotframework进行测试时未启动Swing应用程序

Java 尝试使用robotframework进行测试时未启动Swing应用程序,java,macos,swing,robotframework,Java,Macos,Swing,Robotframework,我试图使用robotframework的swing库在基于swing的java应用程序上运行一些自动化测试。我想我已经安装了所有的库。但是,当我运行测试时,它无法真正正确地启动应用程序(即失败测试),并且在测试实际启动之前,我会收到一大堆警告(?)。另外,我很高兴看到Java图标出现在dock上,但实际上没有打开任何窗口 不过,我对测试演示应用程序没有任何问题。那很好 下面是我的机器人脚本: *** settings *** Library SwingLibrary *** Test Cas

我试图使用robotframework的swing库在基于swing的java应用程序上运行一些自动化测试。我想我已经安装了所有的库。但是,当我运行测试时,它无法真正正确地启动应用程序(即失败测试),并且在测试实际启动之前,我会收到一大堆警告(?)。另外,我很高兴看到Java图标出现在dock上,但实际上没有打开任何窗口

不过,我对测试演示应用程序没有任何问题。那很好

下面是我的机器人脚本:

*** settings ***
Library  SwingLibrary

*** Test Cases ***
Test Push Button
    Start Test Application

*** Keywords ***
Start Test Application
    Start Application  com.xyz.app.ui.MainFrame
    Select Main Window
以下是输出:

    davids$ sudo CLASSPATH=lib/swinglibrary-1.5.1.jar:app.jar jybot app.robot
Password:
10:31:34.578 [MainThread] DEBUG o.p.n.u.i.l.InternalLoggerFactory - Using SLF4J as the default logging framework
10:31:34.613 [MainThread] DEBUG o.p.n.u.internal.PlatformDependent0 - java.nio.Buffer.address: available
10:31:34.613 [MainThread] DEBUG o.p.n.u.internal.PlatformDependent0 - sun.misc.Unsafe.theUnsafe: available
10:31:34.614 [MainThread] DEBUG o.p.n.u.internal.PlatformDependent0 - sun.misc.Unsafe.copyMemory: available
10:31:34.615 [MainThread] DEBUG o.p.n.u.internal.PlatformDependent0 - java.nio.Bits.unaligned: true
10:31:34.616 [MainThread] DEBUG o.p.n.u.internal.PlatformDependent - Java version: 8
10:31:34.616 [MainThread] DEBUG o.p.n.u.internal.PlatformDependent - -Dio.netty.noUnsafe: false
10:31:34.616 [MainThread] DEBUG o.p.n.u.internal.PlatformDependent - sun.misc.Unsafe: available
10:31:34.617 [MainThread] DEBUG o.p.n.u.internal.PlatformDependent - -Dio.netty.noJavassist: false
10:31:34.697 [MainThread] DEBUG o.p.n.u.internal.PlatformDependent - Javassist: available
10:31:34.698 [MainThread] DEBUG o.p.n.u.internal.PlatformDependent - -Dio.netty.tmpdir: /var/folders/zz/zyxvpxvq6csfxvn_n0000000000000/T (java.io.tmpdir)
10:31:34.698 [MainThread] DEBUG o.p.n.u.internal.PlatformDependent - -Dio.netty.bitMode: 64 (sun.arch.data.model)
10:31:34.698 [MainThread] DEBUG o.p.n.u.internal.PlatformDependent - -Dio.netty.noPreferDirect: false
10:31:34.698 [MainThread] DEBUG o.p.n.buffer.PooledByteBufAllocator - -Dio.netty.allocator.numHeapArenas: 4
10:31:34.699 [MainThread] DEBUG o.p.n.buffer.PooledByteBufAllocator - -Dio.netty.allocator.numDirectArenas: 4
10:31:34.699 [MainThread] DEBUG o.p.n.buffer.PooledByteBufAllocator - -Dio.netty.allocator.pageSize: 8192
10:31:34.699 [MainThread] DEBUG o.p.n.buffer.PooledByteBufAllocator - -Dio.netty.allocator.maxOrder: 11
10:31:34.699 [MainThread] DEBUG o.p.n.buffer.PooledByteBufAllocator - -Dio.netty.allocator.chunkSize: 16777216
10:31:34.699 [MainThread] DEBUG o.p.n.buffer.PooledByteBufAllocator - -Dio.netty.allocator.tinyCacheSize: 512
10:31:34.699 [MainThread] DEBUG o.p.n.buffer.PooledByteBufAllocator - -Dio.netty.allocator.smallCacheSize: 256
10:31:34.699 [MainThread] DEBUG o.p.n.buffer.PooledByteBufAllocator - -Dio.netty.allocator.normalCacheSize: 64
10:31:34.699 [MainThread] DEBUG o.p.n.buffer.PooledByteBufAllocator - -Dio.netty.allocator.maxCachedBufferCapacity: 32768
10:31:34.699 [MainThread] DEBUG o.p.n.buffer.PooledByteBufAllocator - -Dio.netty.allocator.cacheTrimInterval: 8192
10:31:34.720 [MainThread] DEBUG o.p.n.c.MultithreadEventLoopGroup - -Dio.netty.eventLoopThreads: 8
10:31:34.768 [MainThread] DEBUG o.p.netty.channel.nio.NioEventLoop - -Dio.netty.noKeySetOptimization: false
10:31:34.768 [MainThread] DEBUG o.p.netty.channel.nio.NioEventLoop - -Dio.netty.selectorAutoRebuildThreshold: 512
==============================================================================
app                                                                          
==============================================================================
Test Push Button                                                      | FAIL |
com.xyz.app.ui.MainFrame
------------------------------------------------------------------------------
app                                                                   | FAIL |
1 critical test, 0 passed, 1 failed
1 test total, 0 passed, 1 failed
==============================================================================
Output:  /Users/davids/swinglibrary-demo/output.xml
Log:     /Users/davids/swinglibrary-demo/log.html
Report:  /Users/davids/swinglibrary-demo/report.html
此外,我还验证了app.jar文件实际上包含大型机类的路径:com/xyz/app/ui/MainFrame.class

更新: 使用“在单独线程中启动应用程序”关键字而不是“启动应用程序”会出现新的错误。它似乎找不到主类,尽管我已经通过解压缩jar文件手动确认了主类的路径:

线程“thread-14”java.lang.RuntimeException:java.lang.ClassNotFoundException:com.xyz.app.ui.MainFrame中的异常 位于org.robotframework.swing.keyword.launch.applicationLaungKeywords$1.run(applicationLaungKeywords.java:53) 运行(Thread.java:745) 原因:java.lang.ClassNotFoundException:com.xyz.app.ui.MainFrame 位于java.net.URLClassLoader.findClass(URLClassLoader.java:381) 位于java.lang.ClassLoader.loadClass(ClassLoader.java:424) 位于java.lang.ClassLoader.loadClass(ClassLoader.java:357) 位于java.lang.Class.forName0(本机方法) 位于java.lang.Class.forName(Class.java:264) 位于org.robotframework.swing.keyword.launch.ApplicationLaunchingKeywords.getMainMethod(ApplicationLaunchingKeywords.java:64) 位于org.robotframework.swing.keyword.launch.applicationLaungKeywords.launchApplication(applicationLaungKeywords.java:32) 位于org.robotframework.swing.keyword.launch.applicationLaungKeywords$1.run(applicationLaungKeywords.java:51)
... 1更多

以下解决了该问题:

  • 使用
    export
    而不是内联定义来设置
    CLASSPATH
  • 使用.jars的完整路径

真的需要
sudo
吗?(只是…纳闷)@HuguesMoreau其实不是。顺便说一句,如果你感兴趣的话,我在我原来的帖子中添加了一个更新。