0

私は小さなアプリケーション、電話帳を持っています、そして私はそれをテストしたいです。私はuispec4jに問題があります、私はこれを書きます:

public class TestRubricaBlack extends UISpecTestCase{

@BeforeClass
public void setUp(){
    setAdapter(new MainClassAdapter(Rubrica.class, new String[0]));

}

public void testMamma(){

    Window window=getMainWindow();
    assertEquals(true,window.getButton("index").isVisible());
}
}

テストを実行しようとすると、このエラーが発生します。問題は関数getMainWindow()にあります。

java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
    at org.uispec4j.utils.TriggerRunner.runInCurrentThread(TriggerRunner.java:18)
    at org.uispec4j.interception.WindowInterceptor.run(WindowInterceptor.java:320)
    at org.uispec4j.interception.WindowInterceptor.run(WindowInterceptor.java:290)
    at org.uispec4j.interception.MainClassAdapter.getMainWindow(MainClassAdapter.java:24)
    at org.uispec4j.UISpecTestCase.getMainWindow(UISpecTestCase.java:84)
    at it.is2.TestRubricaBlack.testMamma(TestRubricaBlack.java:31)
    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 junit.framework.TestCase.runTest(TestCase.java:168)
    at junit.framework.TestCase.runBare(TestCase.java:134)
    at junit.framework.TestResult$1.protect(TestResult.java:110)
    at junit.framework.TestResult.runProtected(TestResult.java:128)
    at junit.framework.TestResult.run(TestResult.java:113)
    at junit.framework.TestCase.run(TestCase.java:124)
    at junit.framework.TestSuite.runTest(TestSuite.java:243)
    at junit.framework.TestSuite.run(TestSuite.java:238)
    at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:83)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
    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)
Caused by: java.lang.reflect.InvocationTargetException
    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.uispec4j.utils.MainClassTrigger.run(MainClassTrigger.java:22)
    at org.uispec4j.utils.TriggerRunner.runInCurrentThread(TriggerRunner.java:12)
    ... 24 more
Caused by: java.lang.NullPointerException: peer
    at sun.awt.windows.WTextFieldPeer.create(Native Method)
    at sun.awt.windows.WComponentPeer.<init>(WComponentPeer.java:595)
    at sun.awt.windows.WTextComponentPeer.<init>(WTextComponentPeer.java:36)
    at sun.awt.windows.WTextFieldPeer.<init>(WTextFieldPeer.java:65)
    at sun.awt.windows.WToolkit.createTextField(WToolkit.java:332)
    at org.uispec4j.interception.toolkit.ToolkitDelegate.createTextField(ToolkitDelegate.java:262)
    at java.awt.TextField.addNotify(TextField.java:205)
    at java.awt.Container.addNotify(Container.java:2592)
    at javax.swing.JComponent.addNotify(JComponent.java:4683)
    at java.awt.Container.addNotify(Container.java:2592)
    at javax.swing.JComponent.addNotify(JComponent.java:4683)
    at java.awt.Container.addNotify(Container.java:2592)
    at javax.swing.JComponent.addNotify(JComponent.java:4683)
    at java.awt.Container.addNotify(Container.java:2592)
    at javax.swing.JComponent.addNotify(JComponent.java:4683)
    at javax.swing.JRootPane.addNotify(JRootPane.java:735)
    at java.awt.Container.addNotify(Container.java:2592)
    at java.awt.Window.addNotify(Window.java:638)
    at java.awt.Frame.addNotify(Frame.java:469)
    at java.awt.Window.show(Window.java:823)
    at it.is2.Rubrica.main(Rubrica.java:26)
    ... 30 more

誰かが私を助けることができますか?前もって感謝します

4

1 に答える 1

0

スタックトレースは、「インデックス」という名前のボタンが見つからなかったことを示しています。精神的ではない、またはあなたのコードを利用できるようにしていないので、私には理由がわかりません。これが私の最良の推測です:

  1. 「インデックス」という名前のボタンを定義していません
  2. 名前のつづりを間違えました
  3. ボタンは、メインウィンドウに直接ではなく、パネルに定義されています

私はあなたの投稿に出くわした方法である3番目の項目に問題があります。私は間違っているかもしれませんが、uispec4jは、パネルや、私の場合はJScrollPanesのようなコンテナーを自動的に検索しないようです。

この振る舞いについて間違っていることがわかった場合は、返信を更新します。解決策、おそらくカスタムマッチャーを思いついた場合は、それも投稿します。

幸運を。

于 2012-10-23T13:56:27.233 に答える