2011-06-25 3 views
6

Я пытаюсь выполнить JUnit Тестирование веб-приложения J2EE с NB 7.0, JUnit и встроенным сервером Glassfish на машине Win7Professional.NetBeans 7.0, JUnit и Glasfish Embedded 3.1: Не работает

Я сломал его, чтобы просто протестировать простой простой веб-приложение Hello-World с одним сеансом Bean.

У меня есть glasfish-embedded-static-shell.jar в моем пути к классам, а также попытался использовать встроенную в Glassfish-all-3.1 но он также не работал.

Теперь вот код я использую для тестирования боб:

import javax.ejb.embeddable.EJBContainer; 
import org.junit.AfterClass; 
import org.junit.BeforeClass; 
import org.junit.Test; 
import static org.junit.Assert.*; 

public class SimpleBeanTest { 

private static EJBContainer container; 

public SimpleBeanTest() { 
} 

@BeforeClass 
public static void setUpClass() throws Exception { 
    container = javax.ejb.embeddable.EJBContainer.createEJBContainer(); 
} 

@AfterClass 
public static void tearDownClass() throws Exception { 
    container.close(); 
} 

@Test 
public void testCountToThree() throws Exception { 
    System.out.println("countToThree"); 
    SimpleBean instance = (SimpleBean) container.getContext().lookup("java:global/classes/SimpleBean"); 
    int expResult = 0; 
    int result = instance.countToThree(); 
    assertEquals(expResult, result); 

} 
} 

И вот что из этого получается:

19.06.2011 09:31:56 com.sun.enterprise.v3.server.CommonClassLoaderServiceImpl findDerbyClient 
INFO: Cannot find javadb client jar file, derby jdbc driver will not be available by default. 
19.06.2011 09:31:56 org.glassfish.flashlight.impl.provider.FlashlightProbeProviderFactory processXMLProbeProviders 
SCHWERWIEGEND: MNTG0301:Cannot process XML ProbeProvider, xml = META-INF/gfprobe-provider.xml 
java.lang.IllegalStateException: Provider already mapped glassfish:javamail:smtp-transport 

(StackTrace here) 

19.06.2011 09:31:57 org.glassfish.flashlight.impl.provider.FlashlightProbeProviderFactory processXMLProbeProviders 
SCHWERWIEGEND: MNTG0301:Cannot process XML ProbeProvider, xml = META-INF/mojarra-jsf-api-probe-provider.xml 
java.lang.IllegalStateException: Provider already mapped glassfish:jsf:faces-servlet 

(StackTrace here) 

19.06.2011 09:31:57 org.glassfish.flashlight.impl.provider.FlashlightProbeProviderFactory processXMLProbeProviders 
SCHWERWIEGEND: MNTG0301:Cannot process XML ProbeProvider, xml = jersey-gf-server-probe-provider.xml 
java.lang.IllegalStateException: Provider already mapped glassfish:jersey:server-hidden 

(StackTrace here) 

19.06.2011 09:31:57 org.glassfish.flashlight.impl.provider.FlashlightProbeProviderFactory processXMLProbeProviders 
SCHWERWIEGEND: MNTG0301:Cannot process XML ProbeProvider, xml = jersey-gf-statsprovider-probe-provider.xml 
java.lang.IllegalStateException: Provider already mapped glassfish:jersey:server 

(StackTrace here) 

19.06.2011 09:31:57 org.glassfish.ha.store.spi.BackingStoreFactoryRegistry register 
INFO: Registered org.glassfish.ha.store.adapter.cache.ShoalBackingStoreProxy for persistence-type = replicated in BackingStoreFactoryRegistry 
19.06.2011 09:31:57 org.glassfish.ha.store.spi.BackingStoreFactoryRegistry register 
INFO: Registered org.glassfish.ha.store.adapter.cache.ShoalBackingStoreProxy for persistence-type = replicated in BackingStoreFactoryRegistry 
19.06.2011 09:31:57 com.sun.enterprise.v3.server.AppServerStartup run 
SCHWERWIEGEND: Startdienst konnte nicht gestartet werden: com.sun.enterprise.naming.GlassFishNamingBuilder 
19.06.2011 09:31:57 com.sun.enterprise.v3.server.AppServerStartup run 
INFO: GlassFish Server Open Source Edition 3.1 (43) Startzeit: Embedded (597ms), Startdienste(929ms), gesamt(1.526ms) 
19.06.2011 09:31:57 org.glassfish.admin.mbeanserver.JMXStartupService$JMXConnectorsStarterThread run 
INFO: JMXStartupService: JMXConnector system is disabled, skipping. 

UPDATE: И это исключение, которое будет брошенных любыми тестами:

No EJBContainer provider available 
Provider named org.glassfish.ejb.embedded.EJBContainerProviderImpl threw unexpected exception at create EJBContainer: 
java.lang.RuntimeException 
java.lang.RuntimeException: java.lang.IllegalStateException: AMX Booter MBean is already registered: amx-support:type=boot-amx 
    at org.glassfish.internal.embedded.Server.<init>(Server.java:290) 
    at org.glassfish.internal.embedded.Server.<init>(Server.java:66) 
    at org.glassfish.internal.embedded.Server$Builder.build(Server.java:176) 

(Stack Trace here) 

Caused by: java.lang.IllegalStateException: AMX Booter MBean is already registered: amx-support:type=boot-amx 

Я повторно установил NetBeans дважды, и он тоже не работает.

ответ

3

У меня было то же самое и я сделал следующее:

1) Я установил Glassfish 3.1.1 и связал его с моим проектом. Сначала я добавил сервер с помощью Tools - Servers - Add Server ... Затем я щелкнул правой кнопкой мыши мой проект EJB и выбрал Properties - Run - Glassfish 3.1.1
2) В моем EJB pom.XML Я использую эту зависимость (убедитесь, SystemPath переменной указывает на правильный файл):

<dependency> 
    <groupId>org.glassfish.extras</groupId> 
    <artifactId>glassfish-embedded-static-shell</artifactId> 
    <version>3.1.1</version> 
    <scope>system</scope> 
    <systemPath>${glassfish.embedded-static-shell.jar}</systemPath> 
</dependency> 

3) В моей EJB pom.xml я удалены зависимость других людей сказали, что я должен добавить, если я получаю ошибки «Поставщик уже нанесен на карту ...»

<dependency> 
    <groupId>org.glassfish.extras</groupId> 
    <artifactId>glassfish-embedded-all</artifactId> 
    <version>3.1.1</version> 
    <scope>test</scope> 
</dependency> 

Вот и все! Теперь мои тесты EJB JUnit с JPA 2 работают как шарм! Надеюсь это поможет!

1

Кажется, что сервер начинает нормально (некоторые из этих исключений ожидаются, но я не могу подтвердить, все ли они).

  • Выполняете ли вы тесты с помощью «Run> Test Project»?
  • Является ли JUnit GUI всплывающим?
  • Установлен ли JUnit? Netbeans 7.0 теперь спрашивает, хотите ли вы загрузить JUnit из-за проблем с лицензированием ...
  • Можете ли вы запустить модульные тесты, которым не нужен встроенный контейнер?

Постарайтесь выполнить следующие шаги: http://javadude.wordpress.com/2010/02/22/tutorial-most-simple-test-application-for-embedded-glassfish-netbeans-hudson/ (забудьте о части Гудзона). IDE должна позаботиться о том, чтобы включить в себя зависимости для вас.

О, еще одна вещь, поскольку вы используете Windows, не помешает попробовать запустить Netbeans в качестве администратора (щелкните правой кнопкой мыши) и посмотреть, что произойдет.

Cheers,

Update

Может быть, вы ударяете this ошибка:

Смотрите, если начать контейнер, как это работает для вас:

@BeforeClass 
public static void setUpClass() throws Exception { 
    Map<String, Object> p = new HashMap<String, Object>();  
    p.put(EJBContainer.APP_NAME, "foo"); 
    container = EJBContainer.createEJBContainer(p); 
} 
+0

Привет Антоний, я попробовал учебник с такими же результатами. Да, JUNit установлен, он поставляется с установкой NB, когда я пытался запустить тесты, появляется GUI. – SDReyes

+0

@DGalvis. Привет, так в чем проблема, это висит? Это даже отображение «countToThree»? –

+0

Я попытался установить NB полную версию без везения. Использование административных привилегий также не работает. – SDReyes

Смежные вопросы