the Tester does not work for application using guice

WindowTester allows you to easily create and run unit tests for every GUI they build. It can also be used to generate system level tests.

Moderators: gnebling, Eric Clayberg, Dan Rubel, keertip, Phil Quitslund

the Tester does not work for application using guice

Postby Jing » Tue Sep 21, 2010 12:20 am

Hello,

I am trying to use the Window Tester to test a swing application, which uses the google guice for DI engine. While I start recording, I get the following exception:

Caused by: java.lang.ClassCastException: $javax.swing.JFrame$$FastClassByGuice$$1797788b cannot be cast to com.google.inject.internal.cglib.reflect.FastClass
at com.google.inject.internal.cglib.reflect.FastClass$Generator.create(FastClass.java:64)
at com.google.inject.internal.BytecodeGen.newFastClass(BytecodeGen.java:166)
at com.google.inject.DefaultConstructionProxyFactory$1.<init>(DefaultConstructionProxyFactory.java:54)
at com.google.inject.DefaultConstructionProxyFactory.create(DefaultConstructionProxyFactory.java:52)
at com.google.inject.ProxyFactory.create(ProxyFactory.java:152)
at com.google.inject.ConstructorInjectorStore.createConstructor(ConstructorInjectorStore.java:84)
at com.google.inject.ConstructorInjectorStore.access$000(ConstructorInjectorStore.java:31)
at com.google.inject.ConstructorInjectorStore$1.create(ConstructorInjectorStore.java:39)
at com.google.inject.ConstructorInjectorStore$1.create(ConstructorInjectorStore.java:35)
at com.google.inject.internal.FailableCache$1.apply(FailableCache.java:35)
at com.google.inject.internal.MapMaker$StrategyImpl.compute(MapMaker.java:549)
... 83 more

looks like the window tester dose not works with the google guice, since the JFrame instance is created by Guice.
Is there any solution or workaround for such case? Please correct me if I am wrong. Thanks.

best regards!
Jing
Jing
 
Posts: 2
Joined: Tue Sep 21, 2010 12:13 am

Re: the Tester does not work for application using guice

Postby keertip » Tue Sep 21, 2010 9:10 am

As of now, Guice may not supported in WindowTester. Will need to investigate. Does WT throw an exception at start of recording, or is it after you click on the application?

Also, do the following: Run your application, and when it has focus, press Ctrl+shift+F1. This will dump the Swing widget hierarchy in the console. Please post this information, it will give us a good picture of the UI of the application.
keertip
Moderator
 
Posts: 221
Joined: Thu Mar 15, 2007 10:26 am

Re: the Tester does not work for application using guice

Postby Jing » Wed Sep 22, 2010 12:22 am

Thanks for reply.

Yes, the WT throw the exception at start of recording. I can not get my application running under recording.

Here is the dumped widget hierarchy, hope you get the solution. Thank you very much.

javax.swing.JFrame[mainFrame,244,30,1035x768,layout=java.awt.BorderLayout,title=Prototype,resizable,normal,defaultCloseOperation=DO_NOTHING_ON_CLOSE,rootPane=javax.swing.JRootPane[,8,30,1019x730,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=],rootPaneCheckingEnabled=true]
javax.swing.JRootPane[,8,30,1019x730,layout=javax.swing.JRootPane$RootLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777673,maximumSize=,minimumSize=,preferredSize=]
javax.swing.JPanel[null.glassPane,0,0,1019x730,hidden,layout=java.awt.FlowLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=16777217,maximumSize=,minimumSize=,preferredSize=]
javax.swing.JLayeredPane[null.layeredPane,0,0,1019x730,alignmentX=0.0,alignmentY=0.0,border=,flags=0,maximumSize=,minimumSize=,preferredSize=,optimizedDrawingPossible=true]
javax.swing.JPanel[null.contentPane,0,21,1019x709,layout=javax.swing.JRootPane$1,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]
javax.swing.JScrollPane[,0,57,1019x620,layout=javax.swing.ScrollPaneLayout$UIResource,alignmentX=0.0,alignmentY=0.0,border=com.sun.java.swing.plaf.windows.XPStyle$XPFillBorder@ecc7c4,flags=33554760,maximumSize=,minimumSize=,preferredSize=,columnHeader=,horizontalScrollBar=javax.swing.JScrollPane$ScrollBar[,0,0,0x0,hidden,layout=com.sun.java.swing.plaf.windows.WindowsScrollBarUI,alignmentX=0.0,alignmentY=0.0,border=,flags=4194632,maximumSize=,minimumSize=,preferredSize=,blockIncrement=10,orientation=HORIZONTAL,unitIncrement=1],horizontalScrollBarPolicy=HORIZONTAL_SCROLLBAR_AS_NEEDED,lowerLeft=,lowerRight=,rowHeader=,upperLeft=,upperRight=,verticalScrollBar=javax.swing.JScrollPane$ScrollBar[,0,0,0x0,hidden,layout=com.sun.java.swing.plaf.windows.WindowsScrollBarUI,alignmentX=0.0,alignmentY=0.0,border=,flags=4194632,maximumSize=,minimumSize=,preferredSize=,blockIncrement=10,orientation=VERTICAL,unitIncrement=1],verticalScrollBarPolicy=VERTICAL_SCROLLBAR_AS_NEEDED,viewport=javax.swing.JViewport[,1,1,1017x618,layout=javax.swing.ViewportLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=25165832,maximumSize=,minimumSize=,preferredSize=,isViewSizeSet=true,lastPaintPosition=java.awt.Point[x=0,y=0],scrollUnderway=false],viewportBorder=]
javax.swing.JViewport[,1,1,1017x618,layout=javax.swing.ViewportLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=25165832,maximumSize=,minimumSize=,preferredSize=,isViewSizeSet=true,lastPaintPosition=java.awt.Point[x=0,y=0],scrollUnderway=false]
javax.swing.JPanel[,0,0,1017x618,layout=java.awt.BorderLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=java.awt.Dimension[width=1000,height=600]]
javax.swing.JScrollPane$ScrollBar[,0,0,0x0,hidden,layout=com.sun.java.swing.plaf.windows.WindowsScrollBarUI,alignmentX=0.0,alignmentY=0.0,border=,flags=4194632,maximumSize=,minimumSize=,preferredSize=,blockIncrement=10,orientation=VERTICAL,unitIncrement=1]
com.sun.java.swing.plaf.windows.WindowsScrollBarUI$WindowsArrowButton[,0,0,0x0,alignmentX=0.0,alignmentY=0.5,border=com.sun.java.swing.plaf.windows.XPStyle$XPEmptyBorder@12f29d9,flags=4194600,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=,defaultCapable=true]
com.sun.java.swing.plaf.windows.WindowsScrollBarUI$WindowsArrowButton[,0,0,0x0,alignmentX=0.0,alignmentY=0.5,border=com.sun.java.swing.plaf.windows.XPStyle$XPEmptyBorder@12f29d9,flags=4194600,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=,defaultCapable=true]
javax.swing.JScrollPane$ScrollBar[,0,0,0x0,hidden,layout=com.sun.java.swing.plaf.windows.WindowsScrollBarUI,alignmentX=0.0,alignmentY=0.0,border=,flags=4194632,maximumSize=,minimumSize=,preferredSize=,blockIncrement=10,orientation=HORIZONTAL,unitIncrement=1]
com.sun.java.swing.plaf.windows.WindowsScrollBarUI$WindowsArrowButton[,0,0,0x0,alignmentX=0.0,alignmentY=0.5,border=com.sun.java.swing.plaf.windows.XPStyle$XPEmptyBorder@12f29d9,flags=4194600,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=,defaultCapable=true]
com.sun.java.swing.plaf.windows.WindowsScrollBarUI$WindowsArrowButton[,0,0,0x0,alignmentX=0.0,alignmentY=0.5,border=com.sun.java.swing.plaf.windows.XPStyle$XPEmptyBorder@12f29d9,flags=4194600,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=,defaultCapable=true]
javax.swing.JToolBar[,0,0,1019x57,layout=javax.swing.JToolBar$DefaultToolBarLayout,alignmentX=0.0,alignmentY=0.0,border=com.sun.java.swing.plaf.windows.WindowsBorders$ToolBarBorder@1648f32,flags=328,maximumSize=,minimumSize=,preferredSize=,floatable=false,margin=,orientation=HORIZONTAL,paintBorder=true]
javax.swing.JButton[,1,1,51x55,alignmentX=0.0,alignmentY=0.5,border=javax.swing.border.EmptyBorder@f554c0,flags=424,maximumSize=,minimumSize=,preferredSize=,defaultIcon=file:/D:/projects/octopus/octopus-client/bin/classes/images/ToolBarNew.png,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=New,defaultCapable=false]
javax.swing.JButton[,52,1,57x55,alignmentX=0.0,alignmentY=0.5,border=javax.swing.border.EmptyBorder@8f2363,flags=424,maximumSize=,minimumSize=,preferredSize=,defaultIcon=file:/D:/projects/octopus/octopus-client/bin/classes/images/ToolBarOpen.png,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Open...,defaultCapable=false]
javax.swing.JButton[,109,1,51x55,alignmentX=0.0,alignmentY=0.5,border=javax.swing.border.EmptyBorder@15c3cf8,flags=424,maximumSize=,minimumSize=,preferredSize=,defaultIcon=file:/D:/projects/octopus/octopus-client/bin/classes/images/ToolBarSave.png,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Save,defaultCapable=false]
javax.swing.JButton[,160,1,51x55,alignmentX=0.0,alignmentY=0.5,border=javax.swing.border.EmptyBorder@a6f5df,flags=424,maximumSize=,minimumSize=,preferredSize=,defaultIcon=file:/D:/projects/octopus/octopus-client/bin/classes/images/ToolBarSearch.png,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Search,defaultCapable=false]
javax.swing.JButton[,211,1,51x55,alignmentX=0.0,alignmentY=0.5,border=javax.swing.border.EmptyBorder@15825a8,flags=424,maximumSize=,minimumSize=,preferredSize=,defaultIcon=file:/D:/projects/octopus/octopus-client/bin/classes/images/ToolBarPrint.png,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=2,left=14,bottom=2,right=14],paintBorder=true,paintFocus=true,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Print,defaultCapable=false]
de.besitec.octopus.client.desktop.StatusBar[,0,677,1019x32,layout=java.awt.GridBagLayout,alignmentX=0.0,alignmentY=0.0,border=javax.swing.border.EmptyBorder@10697f,flags=9,maximumSize=,minimumSize=,preferredSize=]
javax.swing.JSeparator[,0,2,1019x2,alignmentX=0.0,alignmentY=0.0,border=,flags=0,maximumSize=,minimumSize=,preferredSize=,orientation=HORIZONTAL]
javax.swing.JLabel[,0,0,0x0,alignmentX=0.0,alignmentY=0.0,border=,flags=8388608,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,horizontalAlignment=LEADING,horizontalTextPosition=TRAILING,iconTextGap=4,labelFor=,text=,verticalAlignment=CENTER,verticalTextPosition=CENTER]
javax.swing.JProgressBar[,0,0,0x0,hidden,disabled,alignmentX=0.0,alignmentY=0.0,border=,flags=0,maximumSize=,minimumSize=,preferredSize=,orientation=HORIZONTAL,paintBorder=true,paintString=false,progressString=,indeterminateString=false]
javax.swing.JLabel[,997,10,16x16,alignmentX=0.0,alignmentY=0.0,border=,flags=8388608,maximumSize=,minimumSize=,preferredSize=,defaultIcon=file:/D:/projects/octopus/octopus-client/bin/classes/images/busyicons/idle-icon.png,disabledIcon=,horizontalAlignment=LEADING,horizontalTextPosition=TRAILING,iconTextGap=4,labelFor=,text=,verticalAlignment=CENTER,verticalTextPosition=CENTER]
javax.swing.JMenuBar[,0,0,1019x21,layout=javax.swing.plaf.basic.DefaultMenuLayout,alignmentX=0.0,alignmentY=0.0,border=javax.swing.plaf.basic.BasicBorders$MenuBarBorder@17e1b23,flags=392,maximumSize=,minimumSize=,preferredSize=,margin=,paintBorder=true]
javax.swing.JMenu[fileMenu,0,0,27x19,alignmentX=0.0,alignmentY=0.0,border=javax.swing.plaf.basic.BasicBorders$MarginBorder@27b86c,flags=256,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=0,left=0,bottom=0,right=0],paintBorder=false,paintFocus=false,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=File]
javax.swing.JMenu[editMenu,27,0,29x19,alignmentX=0.0,alignmentY=0.0,border=javax.swing.plaf.basic.BasicBorders$MarginBorder@27b86c,flags=256,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=0,left=0,bottom=0,right=0],paintBorder=false,paintFocus=false,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Edit]
javax.swing.JMenu[adminMenu,56,0,45x19,alignmentX=0.0,alignmentY=0.0,border=javax.swing.plaf.basic.BasicBorders$MarginBorder@27b86c,flags=256,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=0,left=0,bottom=0,right=0],paintBorder=false,paintFocus=false,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Admin]
javax.swing.JMenu[exampleMenu,101,0,53x19,alignmentX=0.0,alignmentY=0.0,border=javax.swing.plaf.basic.BasicBorders$MarginBorder@27b86c,flags=256,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=0,left=0,bottom=0,right=0],paintBorder=false,paintFocus=false,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Example]
javax.swing.JMenu[helpMenu,154,0,33x19,alignmentX=0.0,alignmentY=0.0,border=javax.swing.plaf.basic.BasicBorders$MarginBorder@27b86c,flags=256,maximumSize=,minimumSize=,preferredSize=,defaultIcon=,disabledIcon=,disabledSelectedIcon=,margin=javax.swing.plaf.InsetsUIResource[top=0,left=0,bottom=0,right=0],paintBorder=false,paintFocus=false,pressedIcon=,rolloverEnabled=true,rolloverIcon=,rolloverSelectedIcon=,selectedIcon=,text=Help]
Jing
 
Posts: 2
Joined: Tue Sep 21, 2010 12:13 am

Re: the Tester does not work for application using guice

Postby keertip » Wed Sep 29, 2010 8:32 pm

Do you have a sample swing app with guice that we can use for testing?
keertip
Moderator
 
Posts: 221
Joined: Thu Mar 15, 2007 10:26 am

Re: the Tester does not work for application using guice

Postby Andrei.Pozolotin » Fri Oct 01, 2010 6:50 am

keertip:

1) can you please elaborate: why WT does not work with guice?

2) yes, I have a test project, how do I submit it?

thanks

Andrei
Andrei.Pozolotin
 
Posts: 55
Joined: Wed Sep 22, 2010 5:35 am

Re: the Tester does not work for application using guice

Postby keertip » Fri Oct 01, 2010 11:48 am

1. Will need to investigate.

2. Could you upload a zip file to the forum?
keertip
Moderator
 
Posts: 221
Joined: Thu Mar 15, 2007 10:26 am

Re: the Tester does not work for application using guice

Postby Andrei.Pozolotin » Mon Oct 04, 2010 5:48 am

ok, will do;
Andrei.Pozolotin
 
Posts: 55
Joined: Wed Sep 22, 2010 5:35 am


Return to Window Tester

Who is online

Users browsing this forum: No registered users and 1 guest

cron