0

比較的簡単なテストを行いたい。テストされるクラス (簡略化されていますが、アイデアは得られます):

@Named
@RequestScoped
public class SomeController {

    @Inject
    @RequestParam("someId")
    Long someId;

    public SomeClass getSomeClass() {

        return new SomeClass(someId);
    }
}

そしてテスト:

@RunWith(Arquillian.class)
public class SomeControllerTest {

    @Inject
    private SomeController controller;

    @Deployment
    public static Archive<?> createTestArchive() throws IOException {
    // trimmed out

    }

    @Test
    public void testNullGoalModelInjection() {
    //placeholder test so there are no errors during build

    // I am happy to use setter injection and do
    controller.setSomeId(1);

    // even better if I could get that injected in too
    assertNotNull(controller.getSomeClass());
    }

}

これを試してみると、例外が発生します。

java.lang.IllegalStateException: Attempted to inject an HttpServletRequest before it has been initialized.

これは理にかなっています。

私が本当に疑問に思っているのは:

Arquillian (または他の何か) を介してそのような Bean をテストする方法はありますか?

言い換えれば、この Bean を生成するテストを介して http 要求を呼び出すにはどうすればよいでしょうか。ただし、jsf ファイルなどを配置する必要はありません。

ヘルプ/提案をありがとう。

4

1 に答える 1

1

JBossAS7 は、JMX を介してテストを呼び出す Arquillian プロトコルを使用するため、利用可能な HttpRequest はまったくありません。

https://community.jboss.org/message/722871#722871の説明に従って、JBossAS7 と対話するときに使用するプロトコルを変更してみて ください

これで、HTTP 経由でサーブレットに対してテストが呼び出され、テストが実行されるはずです。

于 2012-11-02T09:49:13.357 に答える