assertj / assertj/assertj-swing

ComponentLookupException when using ContainerFixture.menuItemWithPath()

Offen
#75 2 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
bug import from fest-swing Major
Vorherrschende Sprache
Java
Sterne
121
Forks
52
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

_Issue by **[David Eisner](http://jira.codehaus.org/secure/ViewProfile.jspa?name=deisner)** from Fri, 27 Aug 2010 14:35:28 -0500_
_Originally opened as http://jira.codehaus.org/browse/FEST-385_

---

I'm running into a problem where ContainerFixture.menuItemWithPath() throws an exception because it finds multiple matching components. E.g., if I try this:

--snip--

window.menuItemWithPath( "File", "Exit").click();

--snip--

then this exception is thrown:

--snip--

org.fest.swing.exception.ComponentLookupException: Found more than one component using matcher org.fest.swing.driver.JMenuItemMatcher[label='File|Exit'].

Found:

javax.swing.JMenuItem[name='parentExitMenuItem', text='Exit', selected=false, enabled=true, visible=true, showing=false]

javax.swing.JMenuItem[name='childExitMenuItem', text='Exit', selected=false, enabled=true, visible=true, showing=false]

at org.fest.swing.core.BasicComponentFinder.multipleComponentsFound(BasicComponentFinder.java:296)

at org.fest.swing.core.BasicComponentFinder.find(BasicComponentFinder.java:261)

at org.fest.swing.core.BasicComponentFinder.find(BasicComponentFinder.java:254)

at org.fest.swing.fixture.JMenuItemFinder.menuItemWithPath(JMenuItemFinder.java:48)

at org.fest.swing.fixture.ContainerFixture.menuItemWithPath(ContainerFixture.java:267)

at david.playground.festbug.FestBugTest.testApp(FestBugTest.java:56)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:597)

at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)

at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)

at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)

at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20)

at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)

at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)

at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76)

at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)

at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)

at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)

at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)

at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)

at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)

at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)

at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)

at org.junit.runners.ParentRunner.run(ParentRunner.java:236)

at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49)

at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

--snip--

I'm attaching a toy app and corresponding FEST JUnit test that demonstrates the problem. The initial window is a JFrame with a File > Exit menu item and also a "Launch" JButton in the content pane. When the launch button is pressed, a new JDialog is created as a child of the JFrame. This dialog also has a File > Exit menu item. The test closes the child dialog, and then attempts to click the frame's File > Exit menu item using ContainerFixture.menuItemWithPath(). It looks like it is finding the now-hidden dialog's menu as well, and giving up.

---

votes (original issue): 0
watches (original issue): 0

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Beginne mit JMenuItemFinder.java und ContainerFixture.java und verfolge dann die Suche über BasicComponentFinder.java. Reproduziere den Fall mit der angehängten FestBugTest.java-Testanwendung, bei der ein geschlossenes untergeordnetes JDialog einen passenden Menüeintrag hinterlässt; als erfüllt gilt die Aufgabe, wenn der File > Exit-Eintrag des Frames gefunden und angeklickt werden kann, ohne dass der Eintrag des ausgeblendeten Dialogs eine ComponentLookupException verursacht.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
java
Bereich
desktop, testing
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
42/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.