Выполнение интеграционного тестирования в приложении Oracle ADF

У меня есть приложение ADF, которое работает на моем сервере. Я пытался запустить на нем несколько интеграционных тестов. Раньше я использовал apache cactus framework для тестирования обычных веб-приложений. Мои тестовые примеры будут расширять CactusStrutsTestCase и будут выполняться. Я попытался подойти к приложению ADF с той же концепцией. Но я получаю сообщение об отказе в соединении

java.net.ConnectException: Connection refused: connect
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)

Итак, мой вопрос заключается в том, можно ли проводить тестирование в приложении ADF с помощью ServletTestcase, который является частью Cactus framework?

Спасибо, Джиджой.


person Jijoy    schedule 03.01.2011    source источник


Ответы (1)


То, что вы делаете, возможно. Я знаю, потому что я сделал это.

Прежде всего, откажитесь от подлинного Apache Cactus. Он больше не поддерживается. Вы хотите загрузить JSFUnit и использовать его. Он использует Apache Cactus, но все еще активно поддерживается.

Я предлагаю вам создать свой собственный тестовый пример, который расширяет ServletTestCase, вместо того, чтобы использовать ServletTestCase напрямую.

public class EJBTestCase extends ServletTestCase {
protected InitialContext context;

public static final String userId = "demouser";


public EJBTestCase(String string) {
    super(string);
}

private InitialContext getInitialContext() throws NamingException {
  Hashtable env = new Hashtable();

  env.put(Context.SECURITY_PRINCIPAL, "username");
  env.put(Context.SECURITY_CREDENTIALS, "password");


     return new InitialContext(env);
}

public void setUp() throws Exception {
    super.setUp();

    context = getInitialContext();

}

public void tearDown() throws Exception {
    super.tearDown();

    context.close();
}

public EJBTestCase() {
    super();
}
}

Далее вам нужно настроить файл web.xml:

  <filter>
    <filter-name>JSFUnitFilter</filter-name>
    <filter-class>org.jboss.jsfunit.framework.JSFUnitFilter</filter-class>
  </filter>
...

    <filter-mapping>
        <filter-name>JSFUnitFilter</filter-name>
        <servlet-name>ServletTestRunner</servlet-name>
      </filter-mapping>
      <filter-mapping>
        <filter-name>JSFUnitFilter</filter-name>
        <servlet-name>ServletRedirector</servlet-name>
      </filter-mapping>

...

  <servlet>
    <servlet-name>ServletRedirector</servlet-name>
    <servlet-class>org.jboss.jsfunit.framework.JSFUnitServletRedirector</servlet-class>
  </servlet>
  <servlet>
    <servlet-name>ServletTestRunner</servlet-name>
    <servlet-class>org.apache.cactus.server.runner.ServletTestRunner</servlet-class>
  </servlet>

...

  <servlet-mapping>
    <servlet-name>ServletRedirector</servlet-name>
    <url-pattern>/ServletRedirector</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>ServletTestRunner</servlet-name>
    <url-pattern>/ServletTestRunner</url-pattern>
  </servlet-mapping>

Наконец, когда вы запускаете свои тестовые примеры, вы должны передать параметр cactus.contextURL.

-Dcactus.contextURL=http://127.0.0.1:7101/MyApp

Я предполагаю, что вы используете JDeveloper. Затем вы можете установить это в разделе «Свойства проекта»> «Выполнить/Отладка/Профиль» -> «Редактировать»> «Параметры запуска» -> «Параметры Java».

person Mark Robinson    schedule 29.01.2011