Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Testowanie aplikacji opartej na Seam z wykorzystaniem TestNG

1 view
Skip to first unread message

Piotr Kopernick

unread,
Jan 5, 2007, 6:29:46 AM1/5/07
to
Witam grupowiczów.

Napisałem prosty (bardzo prosty) sklep internetowy z wykorzystaniem
framework'u Seam. Teraz przychodzi pora na testowanie (nie jestem eksremalnym
programistą ;). Chce przetestować na początek komponent wyszukujący produkty,
tzn. zasymulować wpisanie odpowiedniej informacji w formularzu wyszukiwania, a
następnie sprawdzę rozmiar kolekcji zawierającej rezultaty wyszukiwania.
Komponent działa na serwerze poprawnie, jednakże testuję, żeby się tego nauczyć.

Jak wyczytałem w dokumentacji Seam'a, do testowania aplikacji muszę sobie
stworzyć mniej więcej taką klasę:
//---------------------------
public class SearchTest extends SeamTest {

@Test
public void searchTest() throws Exception
{
new FacesRequest()
{

@Override
protected void processValidations() throws Exception{
System.out.println("processValidations");
//walidacja nie potrzebna
}

@Override
protected void updateModelValues(){
//udaje, ze uzytkownik wpisal cos
System.out.println("updateModelValues");
setValue("#{Search.searchedString}", "skarpetki");
}

@Override
protected void invokeApplication(){
System.out.println("invokeApplication");
invokeMethod("#{Search.doSearch}");
}

@Override
protected void renderResponse(){
System.out.println("renderResponse");
Object object = getValue("#{Search.foundItems}");
if(object instanceof Collection)
{
Collection col = (Collection) object;
assert col.size() == 2;
}
else
{
assert false;
}
}
}.run();
}

}
//-------------------------

Do testowania wykorzystuję TestNG i wtyczkę do Eclipsa. W trakcie
rozpoczynania testów otrzymuję następujące wyjątki i ostrzeżenia:

WARN - [BeanSchemaBinding] You should use the 2.0 version of the
Microcontainer xml. xmlns='urn:jboss:bean-deployer:2.0'
..
WARN - [Ejb3Configuration] Persistence provider caller does not implements the
EJB3 spec correctly. PersistenceUnitInfo.getNewTempClassLoader() is null.
..
ERROR [AbstractKernelController] Error installing to Start:
name=persistence.units:jar=sklep.jar,unitName=sklep state=Create
javax.naming.NameAlreadyBoundException
at org.jnp.server.NamingServer.bind(NamingServer.java:144)
at org.jnp.interfaces.NamingContext.bind(NamingContext.java:567)
...

Z tego powodu otrzymuję wyjątek:
FAILED: searchTest
org.jboss.seam.InstantiationException: Could not instantiate Seam component:
Search
at org.jboss.seam.Component.newInstance(Component.java:1724)
at org.jboss.seam.Component.getInstance(Component.java:1627)
at org.jboss.seam.Component.getInstance(Component.java:1594)
at org.jboss.seam.Component.getInstance(Component.java:1588)
at org.jboss.seam.jsf.SeamELResolver.getValue(SeamELResolver.java:39)
at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:135)
at com.sun.el.parser.AstIdentifier.getValue(AstIdentifier.java:65)
at com.sun.el.parser.AstValue.getTarget(AstValue.java:62)
at com.sun.el.parser.AstValue.setValue(AstValue.java:132)
at com.sun.el.ValueExpressionImpl.setValue(ValueExpressionImpl.java:255)
at
org.jboss.seam.util.UnifiedELValueBinding.setValue(UnifiedELValueBinding.java:44)
at org.jboss.seam.mock.SeamTest$Request.setValue(SeamTest.java:363)
at pl.gorzynski.sklep.test.SearchTest$1.updateModelValues(SearchTest.java:32)
at org.jboss.seam.mock.SeamTest$Request.run(SeamTest.java:465)
at pl.gorzynski.sklep.test.SearchTest.searchTest(SearchTest.java:55)
Caused by: javax.naming.NameNotFoundException: SearchBean not bound
at org.jnp.server.NamingServer.getBinding(NamingServer.java:529)
at org.jnp.server.NamingServer.getBinding(NamingServer.java:537)
at org.jnp.server.NamingServer.getObject(NamingServer.java:543)
at org.jnp.server.NamingServer.lookup(NamingServer.java:267)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:626)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:588)
at javax.naming.InitialContext.lookup(Unknown Source)
at org.jboss.seam.Component.instantiateSessionBean(Component.java:1029)
at org.jboss.seam.Component.instantiate(Component.java:1015)
at org.jboss.seam.Component.newInstance(Component.java:1720)
... 35 more
.. Removed 21 stack frames


Próbowałem nawet wyłączyć serwer, ale to też nie pomaga. Może jakieś sugestie?
Googlałem trochę, ale z tymi komunikatami nie za wiele stron wyskakuje, a te
które wyskakują mają rozwiązania do nieco innych problemów.

Konfiguracja:
------------------
System : Windows XP Prof. SP2
środowisko: JBossEclipse 2.0.0.Beta2
wtyczka TestNG: 5.4.0.0
Seam: 1.1.0 CR2
Serwer: JBoss 4.0.4.GA
JDK: 1.5.0_07

--
Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/

Piotr Kopernick

unread,
Jan 5, 2007, 7:58:06 AM1/5/07
to
Informuję o małych postępach oraz załączam kilka dodatkowych informacji.

Po pierwsze projekt został przygotwany z wykorzystaniem narzędzia seam-gen.
Po odpowiednim utworzeniu pliku testng.xml oraz drobnej modyfikacji w
build.xml udało mi się poprawnie uruchomić test (a że test zakończony
pomyślnie to już inna para kaloszy).

Nadal jednak nie mogę wykorzystać wtyczki do eclipsa. Może ktoś wie dlaczego?

Pozdrawiam
piotr.koper

0 new messages