And this is the chronological listing of methods: http://old.nabble.com/file/p27372140/methods.html methods.html
-------- Below is the listing of methods in HTML, just in case the file uploaded to nabble doesn't work ------- <h2>Methods run, sorted chronologically</h2><h3>>> means before, << means after</h3><p/><br/><em>Command line suite</em><p/><small>(Hover the method name to see the test class name)</small><p/> <table border="1"> <tr><th>Time</th><th>Delta (ms)</th><th>Suite<br>configuration</th><th>Test<br>configuration</th><th>Class<br>configuration</th><th>Groups<br>configuration</th><th>Method<br>configuration</th><th>Test<br>method</th><th>Thread</th><th>Instances</th></tr> <tr bgcolor="7b7c76"> <td>10/01/29 07:56:09</td> <td>0</td> <td> </td><td> </td><td title=">>com.formos.tapestry.testify.testng.TapestryTest.processInjectAnnotation()">>>processInjectAnnotation</td> <td> </td><td> </td><td> </td> <td>m...@9633996</td> <td></td> </tr> <tr bgcolor="7b7c76"> <td>10/01/29 07:56:10</td> <td>1091</td> <td> </td><td> </td><td> </td><td> </td><td title=">>com.formos.tapestry.testify.testng.TapestryTest.setUp()">>>setUp</td> <td> </td> <td>m...@9633996</td> <td></td> </tr> <tr bgcolor="74c3aa"> <td>10/01/29 07:56:09</td> <td>123</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="com.troymaxventures.zadachite.pagetests.StupidPageTest.testElementIsOnPage()">testElementIsOnPage</td> <td>m...@9633996</td> <td></td> </tr> <tr bgcolor="7b7c76"> <td>10/01/29 07:56:10</td> <td>1095</td> <td> </td><td> </td><td> </td><td> </td><td title="<<com.formos.tapestry.testify.testng.TapestryTest.tearDown()"><<tearDown</td> <td> </td> <td>m...@9633996</td> <td></td> </tr> <tr bgcolor="7b7c76"> <td>10/01/29 07:56:10</td> <td>1091</td> <td> </td><td> </td><td> </td><td> </td><td title=">>com.formos.tapestry.testify.testng.TapestryTest.setUp()">>>setUp</td> <td> </td> <td>m...@9633996</td> <td></td> </tr> <tr bgcolor="74c3aa"> <td>10/01/29 07:56:10</td> <td>1092</td> <td> </td><td> </td><td> </td><td> </td><td> </td><td title="com.troymaxventures.zadachite.pagetests.StupidPageTest.testStupidPageUnitTest()">testStupidPageUnitTest</td> <td>m...@9633996</td> <td></td> </tr> <tr bgcolor="7b7c76"> <td>10/01/29 07:56:10</td> <td>1095</td> <td> </td><td> </td><td> </td><td> </td><td title="<<com.formos.tapestry.testify.testng.TapestryTest.tearDown()"><<tearDown</td> <td> </td> <td>m...@9633996</td> <td></td> </tr> </table> akochnev wrote: > > Paul, > thanks for the quick response. Now, down the checklist : > > 1. I am extending from the testng version of the class: > package com.troymaxventures.zadachite.pagetestsupport; > > > > import com.formos.tapestry.testify.core.TapestryTester; > import com.formos.tapestry.testify.testng.TapestryTest; > > public abstract class AbstractZdTapTest extends TapestryTest { > private static final TapestryTester SHARED_TESTER = new > TapestryTester("foo", ZdTestAppModule.class); > > public AbstractZdTapTest() { > super(SHARED_TESTER); > } > } > > 2. doSetUp() is indeed being called, I added a breakpoint and a println : > > @Override > protected void doSetUp() { > userRepo = EasyMock.createMock(UserRepository.class); > System.out.println("The doSetUp() is called by TestNG"); > } > > The doSetUp() is called by TestNG > Tests run: 2, Failures: 2, Errors: 0, Skipped: 0, Time elapsed: 5.051 sec > <<< FAILURE! > > 3. The testng config file : > I run the test from Maven, this is the suite file that gets generated : > <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> > <suite thread-count="5" skipfailedinvocationCounts="false" verbose="0" > name="Failed suite [Command line suite]" junit="false" annotations="JDK"> > <test name="Command line test(failed)" junit="false" annotations="JDK"> > <classes> > <class > name="com.troymaxventures.zadachite.pagetests.StupidPageTest"> > <methods> > <include name="processInjectAnnotation"/> > <include name="testElementIsOnPage"/> > <include name="tearDown"/> > <include name="testStupidPageUnitTest"/> > <include name="setUp"/> > </methods> > </class> > </classes> > </test> > </suite> > > 4. I added an extra test where I explicitly use the pageTester to try to > inject the dependencies into my page. When I specify a totally bogus > package name ( so that Testify doesn't pick up the AppModule from my app), > the test fails w/ an error that it can't find my page (understandable, as > I had the bogus package name, so it can't find the page) when I render the > page using the tester; however, when I try to inject the dependencies > directly into the object instance, it fails that there is no instance of > UserRepository . When I include the full package name (so that testify > picks up the AppModule), the injectInto populates the service from the > AppModule and not with the implementation that I provide in the test. When > I use the tester.renderPage("stupid") and debug the page, I see nulls set > on all the services (e.g. in my example, userRepo is null), and I also see > non-null values in some mangled names in the class (e.g. something like > _$nonTestUserRepo) > > > ------------------------------------------------------------------------------- > Test set: TestSuite > ------------------------------------------------------------------------------- > Tests run: 2, Failures: 2, Errors: 0, Skipped: 0, Time elapsed: 5.052 sec > <<< FAILURE! > testElementIsOnPage(com.troymaxventures.zadachite.pagetests.StupidPageTest) > Time elapsed: 0.966 sec <<< FAILURE! > java.lang.RuntimeException: Request was not handled: 'stupid' may not be a > valid page name. > at > org.apache.tapestry5.test.PageTester.renderPage(PageTester.java:177) > at > com.troymaxventures.zadachite.pagetests.StupidPageTest.testElementIsOnPage(StupidPageTest.java:40) > > testStupidPageUnitTest(com.troymaxventures.zadachite.pagetests.StupidPageTest) > > Time elapsed: 0.01 sec <<< FAILURE! > java.lang.RuntimeException: No service implements the interface > com.troymaxventures.zadachite.services.UserRepository. > at > org.apache.tapestry5.ioc.internal.RegistryImpl.getService(RegistryImpl.java:575) > at > org.apache.tapestry5.ioc.internal.RegistryWrapper.getService(RegistryWrapper.java:58) > at > org.apache.tapestry5.test.PageTester.getService(PageTester.java:154) > at > com.formos.tapestry.testify.core.TapestryTester$FieldInjector.process(TapestryTester.java:125) > at > com.formos.tapestry.testify.core.TapestryTester.processField(TapestryTester.java:106) > at > com.formos.tapestry.testify.core.TapestryTester.processFieldsAnnotatedWith(TapestryTester.java:96) > at > com.formos.tapestry.testify.core.TapestryTester.injectInto(TapestryTester.java:74) > at > com.troymaxventures.zadachite.pagetests.StupidPageTest.testStupidPageUnitTest(StupidPageTest.java:53) > > The superclass w/ a bogus package name: > import com.formos.tapestry.testify.core.TapestryTester; > import com.formos.tapestry.testify.testng.TapestryTest; > > public abstract class AbstractZdTapTest extends TapestryTest { > private static final TapestryTester SHARED_TESTER = new > TapestryTester("foo", ZdTestAppModule.class); > > public AbstractZdTapTest() { > super(SHARED_TESTER); > } > } > > import com.formos.tapestry.testify.core.ForComponents; > import com.troymaxventures.zadachite.model.EmailAddress; > import com.troymaxventures.zadachite.model.UserRegistration; > import com.troymaxventures.zadachite.model.ZdUser; > import com.troymaxventures.zadachite.pages.Stupid; > import com.troymaxventures.zadachite.pagetestsupport.AbstractZdTapTest; > import com.troymaxventures.zadachite.services.UserRepository; > import org.apache.tapestry5.dom.Document; > import org.easymock.EasyMock; > import org.testng.Assert; > import org.testng.annotations.Test; > import static org.easymock.EasyMock.*; > > /** > * > * @author polrtex > */ > public class StupidPageTest extends AbstractZdTapTest { > @ForComponents > UserRepository userRepo; > > > @Override > protected void doSetUp() { > userRepo = EasyMock.createMock(UserRepository.class); > System.out.println("The doSetUp() is called by TestNG"); > } > > > @Test > public void testElementIsOnPage() throws Exception { > > expect(userRepo.userRegistered((EmailAddress)anyObject())).andStubReturn(Boolean.FALSE); > ZdUser testUser = new ZdUser(new EmailAddress("f...@bar.com")); > > expect(userRepo.registerUser(isA(UserRegistration.class))).andStubReturn(testUser); > > > replay(userRepo); > > Document page = tester.renderPage("stupid"); > Assert.assertTrue(page.toString().contains("I should be empty")); > } > > @Test > public void testStupidPageUnitTest() throws Exception { > > expect(userRepo.userRegistered((EmailAddress)anyObject())).andStubReturn(Boolean.FALSE); > ZdUser testUser = new ZdUser(new EmailAddress("f...@bar.com")); > > expect(userRepo.registerUser(isA(UserRegistration.class))).andStubReturn(testUser); > > replay(userRepo); > > Stupid s = new Stupid(); > // when I have a bogus package name, this fails w/ a message that > there are no UserRepository-ies to inject > tester.injectInto(s); > s.setupRender(); > > } > } > > > > > Paul Field-4 wrote: >> >> >> The next thing is probably to check that the various setup methods are >> being called. Can you put a print statement into doSetUp() and check it's >> actually being called? This will let us see whether the setup isn't being >> called, or the @ForComponents processing isn't working properly. I >> suspect >> the doSetUp()isn't being called and that's going to be a TestNG thing: it >> should be calling TapestryTest#setUp() method... Can you check the TestNG >> output reports - I seem to remember that one of them outputs the sequence >> of setup methods and tests? If you're still stuck can you also send the >> testng configuration (xml) file? >> >> Let me know what you find. >> >> - Paul >> >> >> >> >> akochnev <akoch...@gmail.com> wrote on 29/01/2010 11:24:01: >> >>> >>> I'm running into trouble with using services declared inside of a >> Testify >>> TestNG test case with @ForComponents into my pages - when I ask the >> tester >>> to render a page, the services that were supposed to be injected, are >> null. >>> Any tips on what I'm doing wrong ? >>> >>> >>> Here is the sample code: >>> >>> public class StupidPageTest extends AbstractZdTapTest { >>> @ForComponents >>> private UserRepository userRepo; >>> >>> >>> @Override >>> protected void doSetUp() { >>> userRepo = EasyMock.createMock(UserRepository.class); >>> } >>> >>> >>> @Test >>> public void testElementIsOnPage() throws Exception { >>> >>> expect(userRepo.userRegistered((EmailAddress)anyObject())). >>> andStubReturn(Boolean.FALSE); >>> ZdUser testUser = new ZdUser(new EmailAddress("f...@bar.com"));; >>> >>> expect(userRepo.registerUser(isA(UserRegistration.class))). >>> andStubReturn(testUser); >>> replay(userRepo); >>> Document page = tester.renderPage("stupid"); >>> System.out.println("Rendered page: " + page.toString()); >>> >>> } >>> } >>> >>> public abstract class AbstractZdTapTest extends TapestryTest { >>> private static final TapestryTester SHARED_TESTER = new >>> TapestryTester("com.troymaxventures.zadachite", >>> ZdTestAppModule.class,AppModule.class); >>> >>> public AbstractZdTapTest() { >>> super(SHARED_TESTER); >>> } >>> } >>> >>> public abstract class AbstractZdTapTest extends TapestryTest { >>> private static final TapestryTester SHARED_TESTER = new >>> TapestryTester("com.troymaxventures.zadachite", ZdTestAppModule.class); >>> >>> public AbstractZdTapTest() { >>> super(SHARED_TESTER); >>> } >>> } >>> >>> public class ZdTestAppModule { >>> >>> /** >>> * Ensure that there are valid HTTP request/response objects in the >>> test, otherwise the ACEGI integration tends to blow up. >>> */ >>> public static void >>> contributeRequestHandler(OrderedConfiguration<RequestFilter> config, >> final >>> RequestGlobals requestGlobals) { >>> RequestFilter filter = new RequestFilter() { >>> >>> @Override >>> public boolean service(Request request, Response response, >>> RequestHandler handler) throws IOException { >>> >>> requestGlobals.storeServletRequestResponse(EasyMock. >>> createMock(HttpServletRequest.class), >>> EasyMock.createMock(HttpServletResponse.class)); >>> return handler.service(request, response); >>> } >>> }; >>> config.add("EnsureNonNullHttpRequestAndResponse", filter, >>> "before:*"); >>> } >>> } >>> >>> public class Stupid { >>> @Inject >>> private UserRepository userRepo; >>> void setupRender() throws StorageException { >>> // the userRepo is null here during the test >>> userRepo.getUser(new EmailAddress("f...@bar.com")); >>> } >>> } >>> >>> >>> -- >>> View this message in context: http://old.nabble.com/TestNG--- >>> Injecting-Testify-services-into-pages-tp27370621p27370621.html >>> Sent from the Tapestry - User mailing list archive at Nabble.com. >>> >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org >>> For additional commands, e-mail: users-h...@tapestry.apache.org >>> >> >> >> >> --- >> >> This e-mail may contain confidential and/or privileged information. If >> you are not the intended recipient (or have received this e-mail in >> error) please notify the sender immediately and delete this e-mail. Any >> unauthorized copying, disclosure or distribution of the material in this >> e-mail is strictly forbidden. >> >> Please refer to http://www.db.com/en/content/eu_disclosures.htm for >> additional EU corporate and regulatory disclosures. >> > > -- View this message in context: http://old.nabble.com/TestNG---Injecting-Testify-services-into-pages-tp27370621p27372140.html Sent from the Tapestry - User mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org