spek icon indicating copy to clipboard operation
spek copied to clipboard

Robolectric integration

Open dmarcato opened this issue 8 years ago • 33 comments

Currently, Spek doesn't play well with Robolectric :disappointed:

The reason is that Robolectric requires a BlockJUnit4ClassRunner, but Spek requires its own JUnitClassRunner. The exception thrown is:

java.lang.Exception: No runnable methods
    at org.junit.runners.BlockJUnit4ClassRunner.validateInstanceMethods(BlockJUnit4ClassRunner.java:191)
    at org.junit.runners.BlockJUnit4ClassRunner.collectInitializationErrors(BlockJUnit4ClassRunner.java:128)
    at org.junit.runners.ParentRunner.validate(ParentRunner.java:416)
    at org.junit.runners.ParentRunner.<init>(ParentRunner.java:84)
    at org.junit.runners.BlockJUnit4ClassRunner.<init>(BlockJUnit4ClassRunner.java:65)
    at org.robolectric.RobolectricTestRunner.<init>(RobolectricTestRunner.java:78)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:104)
    at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86)
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
    at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26)
    at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
    at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:33)
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:42)
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:234)
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:74)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)

Would it be possible to support framework like Robolectric?

dmarcato avatar Feb 25 '16 20:02 dmarcato

+1

jaredsburrows avatar Mar 09 '16 02:03 jaredsburrows

+1

ChrisZou avatar Apr 08 '16 03:04 ChrisZou

+1

kiharakato avatar Apr 14 '16 01:04 kiharakato

+1

pivotal-james-zcheng avatar Apr 25 '16 23:04 pivotal-james-zcheng

+1

d-lorenc avatar Jul 07 '16 12:07 d-lorenc

+1

temporaryna avatar Jul 21 '16 22:07 temporaryna

+1

Spoki4 avatar Aug 08 '16 16:08 Spoki4

Not a Robolectric user at the moment, can't you just extend RobolectricTestRunner and add functionality of JUnitSpekRunner to it?

On Mon, Aug 8, 2016 at 7:52 PM, Ivan [email protected] wrote:

+1

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/JetBrains/spek/issues/65#issuecomment-238298607, or mute the thread https://github.com/notifications/unsubscribe-auth/AA7B3DnUI_Bf5Wv0N31NDwq7atXPtC8tks5qd17RgaJpZM4HjK-5 .

artem-zinnatullin avatar Aug 08 '16 16:08 artem-zinnatullin

+1

lordspace74 avatar Aug 10 '16 14:08 lordspace74

+1

nomisRev avatar Aug 26 '16 15:08 nomisRev

+1

Dima564 avatar Oct 08 '16 12:10 Dima564

+1

AndriyBas avatar Oct 08 '16 13:10 AndriyBas

+1

KolomietsOleh avatar Oct 08 '16 14:10 KolomietsOleh

+1

fullkomnun avatar Nov 01 '16 10:11 fullkomnun

+1

rafaelsm avatar Jan 25 '17 01:01 rafaelsm

+1

mht-yu-iimura avatar Mar 02 '17 02:03 mht-yu-iimura

+1

davidcrotty avatar Mar 17 '17 11:03 davidcrotty

+1

89jd avatar Mar 21 '17 15:03 89jd

Does anyone have any ideas on an implementation of having Spek work with RoboElectric. I have tried to take a look, but I am a bit lost... If someone can point me in the right direction, I am happy to see what I can do

Thanks

89jd avatar Mar 21 '17 16:03 89jd

@JackED42 see InstanceFactory and @CreateWith since most likely you will need to use custom class loaders.

raniejade avatar Mar 22 '17 05:03 raniejade

+1

paganaye avatar May 15 '17 13:05 paganaye

+1

bl-lia avatar May 25 '17 05:05 bl-lia

+1

crow-misia avatar Aug 08 '17 06:08 crow-misia

+1

t28hub avatar Aug 14 '17 10:08 t28hub

+1

dave08 avatar Sep 10 '17 12:09 dave08

I can add support for robolectric by writing a custom test engine (it will be a copy of Robolectric's test runner). There will be few limitations such as configs per test since I don't know how can we annotate a test in spek.

bangarharshit avatar Oct 02 '17 14:10 bangarharshit

@bangarharshit thanks, as much as possible we prefer to decouple the implementation from JUnit. The idea is to implement it using Spek's API. We provide @CreateWith probably a good place to start.

raniejade avatar Oct 02 '17 14:10 raniejade

@bangarharshit hello, have you made the implementation or support for RoboElectric really would be very interesting, thanks in advance

amed500 avatar Nov 06 '17 17:11 amed500

The pr is almost ready. I will be adding tests and test with different Android configurations before sending the PR. Definitely by end of this week.

bangarharshit avatar Nov 06 '17 17:11 bangarharshit

What happened to this? Does Spek to Robolectric integration work?

thsaravana avatar Dec 16 '19 12:12 thsaravana