I have very briefly tried to get this up and running (using JUnit 4), but I am not sure what to make of the example, although the instructions seem simple enough, could there be a naming problem in the constructor, shouldn't it read:
import com.formos.tapestry.testify.core.TapestryTester;
import com.formos.tapestry.testify.junit4.TapestryTest;
public abstract class AbstractMyApplicationTest extends TapestryTest {
private static final TapestryTester SHARED_TESTER = new TapestryTester("demo", MyCoreModule.class);
public *AbstractMyApplicationTest()* { //and not TestifyTest() ?
super(SHARED_TESTER);
}
@Override
protected void setUpForAllTestClasses() throws Exception {
MockitoAnnotations.initMocks(this);
}
}
Cheers,
Peter
----- Original Message -----
From: "Paul Field" <
paul.field@...>
To: "Tapestry users" <
users@...>
Sent: Friday, 19 June, 2009 11:53:24 GMT +02:00 Athens, Beirut, Bucharest, Istanbul
Subject: Re: [Announce] Tapestry Testify project
> This looks really promising Paul, thanks!
>
> One question, can Easymock be used for mocks, I am not familiar with
Mockito?
Absolutely - Testify doesn't depend on Mockito.
BTW, do look at Mockito (
http://mockito.org/) - it's a very clean way to
write stubs and mocks - I used to be an EasyMock user and I've been
converted :-)
So, some more information (which I will put into the documentation at some
point) ....
My aim was just made sure that Testify would work well with Mockito's
@Mock annotation so, if you use Mockito, it's *really* simple to create a
mock and inject it into a component:
public class MyTest extends AbstractMyApplicationTest {
@ForComponents @Mock MyService service;
public void testElementIsOnPage() {
when(service.shouldShowElement()).thenReturn(true);
Document page = tester.renderPage("mypage");
assertNotNull(page.getElementById("myid"));
}
In this example, @ForComponents is a Testify annotation; @Mock is a
Mockito annotation and AbstractMyApplicationTest is your own abstract test
class that does standard setup:
public abstract class AbstractMyApplicationTest extends TapestryTest {
private static final TapestryTester SHARED_TESTER
= new TapestryTester("demo", MyCoreModule.class);
public TestifyTest() {
super(SHARED_TESTER);
}
@Override
protected void setUpForAllTestClasses() throws Exception {
MockitoAnnotations.initMocks(this);
}
}
Because this is *your* standard superclass, it's your choice to include
other frameworks such as Mockito (or you could write your own equivalent
of @Mock but for EasyMock and wire it in here).
-------------------------
However, if you wanted to use EasyMock, you'd setup the mocks yourself in
your test. Something like this:
public class MyTest extends AbstractMyApplicationTest {
@ForComponents MyService service;
public void doSetUp() {
service = EasyMock.createMock(MyService.class);
}
public void testElementIsOnPage() {
expect(service.shouldShowElement()).andReturn(true);
replay(service);
Document page = tester.renderPage("mypage");
assertNotNull(page.getElementById("myid"));
}
And your standard superclass, obviously, doesn't set up Mockito:
public abstract class AbstractMyApplicationTest extends TapestryTest {
private static final TapestryTester SHARED_TESTER
= new TapestryTester("demo", MyCoreModule.class);
public TestifyTest() {
super(SHARED_TESTER);
}
}
------------------
Paul Field
Research IT
Deutsche Bank
---
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.
---------------------------------------------------------------------
To unsubscribe, e-mail:
users-unsubscribe@...
For additional commands, e-mail:
users-help@...