Re: Is it possible to have write NonBlocking Junit tests
Neil Swingler <[email protected]> Thu, 10 Apr 2014 20:17:01 +0100
| Newsgroups | gmane.comp.java.junit.user |
|---|---|
| Message-ID | <CAFYH9Bqro5jJfeqHsuYaoA2G+fEQ3KuUamAYCE4xxdpwDUP5RQ@mail.gmail.com> |
Bah sent an incomplete example by accident. Here is the whole message
Use a SettableFuture from guava. To borrow Colin's example
@Test
public void testAsync() throws Exception {
final SettableFuture<Message> future = SettableFuture.create();
someAsyncCode(new Handler() {
public void handle(Message message) {
future.set(message);
}
});
assertThat(future.get(), is(something));
}
- Neil
On 10 April 2014 18:32, Colin Vipurs <[email protected]> wrote:
>
>
> You could use a locking mechanism shared between your test and handler so
> that progress continues as quick as possible and then put an overall
> timeout on your test in the event of failure.
>
> Something like this should work just fine:
>
> @Test
> public void testAsync() throws Exception {
> final Semaphore lock = new Semaphore(0);
> someAsyncCode(new Handler() {
> public void handle() {
> // put your assertions in here
> lock.release();
> }
> });
> lock.acquire();
> }
>
>
> On Thu, Apr 10, 2014 at 4:21 PM, <[email protected]> wrote:
>
>>
>>
>> I am writing a Junit tests for Amqp Message Listener.This is how the test
>> is written.I send a message to a exchange and introduce a delay of 1s
>> (assuming that the listener will do its job within that time frame).This
>> approach slows down the build process as there 15-20 tests like these which
>> take a minimum of 20 seconds to execute.Is there a way in which I can do
>> this is a non blocking way.For pass a call handler which verifies the tests
>> after the listener does it job.Something like Actors might be internally
>> used
>>
>
>
>
> --
> Maybe she awoke to see the roommate's boyfriend swinging from the
> chandelier wearing a boar's head.
>
> Something which you, I, and everyone else would call "Tuesday", of course.
>
>
>
>