2017-07-05 21 views
0

私はmockito/powermockバージョン1.7.0、Spring Boot 2.0.0 M2、Kotlin 1.3.0を使用しています。Mockito/PowermockがKotlinで期待通りに動作しない

私は、リポジトリを挿入するSpring @Serviceクラスをテストしています。 私はテストでそのリポジトリを模擬したいので、クラスそのものをテストできます。

私はKotlinに新しいんだけど、私は、Javaから来るので、私は「Javaの道」これをやってみましたが、おそらく私がここに...

何かが欠けていますが、私のサービス・インターフェースである:

interface MyService { 
    fun create(myObject: MyObject): MyObject 
} 

...とその実装:

@Service 
class DefaultMyService : MyService { 
    @Autowired 
    lateinit var myRepository: MyRepository 
    override fun create(myObject: MyObject): MyObject = this.myRepository.insert(myObject) 
} 

ここでは私のリポジトリ(私はモンゴで春のデータを使用しています)です私はこのテストを実行すると

@RunWith(PowerMockRunner::class) 
@PrepareForTest(MyService::class) 
class MyServiceTest { 
    @Mock 
    lateinit var myRepository: MyRepository 
    @InjectMocks 
    lateinit var myService: MyService 

    @Test 
    fun shouldDoSomething() { 
     val myObject = MyObject(name = "Marco") 
     `when`(myRepository.insert(myObject)).thenReturn(myObject) 
     assertEquals(myObject.name, this.myService.create(myObject).name) 
    } 
} 

、例外が発生します:私は間違って何をやっている

Exception in thread "main" java.lang.NoClassDefFoundError: org/mockito/exceptions/Reporter 
    at sun.reflect.GeneratedSerializationConstructorAccessor5.newInstance(Unknown Source) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
    at org.objenesis.instantiator.sun.SunReflectionFactoryInstantiator.newInstance(SunReflectionFactoryInstantiator.java:48) 
    at org.powermock.reflect.internal.WhiteboxImpl.newInstance(WhiteboxImpl.java:260) 
    at org.powermock.reflect.Whitebox.newInstance(Whitebox.java:139) 
    at org.powermock.api.extension.reporter.AbstractMockingFrameworkReporterFactory.getInstanceForClassLoader(AbstractMockingFrameworkReporterFactory.java:41) 
    at org.powermock.api.extension.reporter.AbstractMockingFrameworkReporterFactory.create(AbstractMockingFrameworkReporterFactory.java:35) 
    at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.getMockingFrameworkReporter(JUnit4TestSuiteChunkerImpl.java:140) 
    at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.run(JUnit4TestSuiteChunkerImpl.java:119) 
    at org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner.run(AbstractCommonPowerMockRunner.java:57) 
    at org.powermock.modules.junit4.PowerMockRunner.run(PowerMockRunner.java:59) 
    at org.junit.runner.JUnitCore.run(JUnitCore.java:137) 
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68) 
    at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:51) 
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242) 
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70) 
Caused by: java.lang.ClassNotFoundException: org.mockito.exceptions.Reporter 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    at org.powermock.core.classloader.MockClassLoader.loadModifiedClass(MockClassLoader.java:202) 
    at org.powermock.core.classloader.DeferSupportingClassLoader.loadClass1(DeferSupportingClassLoader.java:89) 
    at org.powermock.core.classloader.DeferSupportingClassLoader.loadClass(DeferSupportingClassLoader.java:79) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
... 16 more 

ここ

interface MyRepository: MongoRepository<MyObject, String> 

0は、私のテストクラスですか?私はそれがいくつかの構成上の問題だと思うが、私は間違いがどこにあるのか正確に理解できない。

+0

使用しているPowerMockとMockitoのバージョンは何?この例では、kotlin-allopenを使用することができるとき、またはhttp://hadihariri.com/2016/10/04/Mocking-Kotlin-With-Mockito/を使用できるときは、PowerMockを使用する必要はありません。 –

答えて

0

あなたのmockitoとpowermockのバージョンがうまくいっていないようです。互換性のあるバージョンを使用する必要があります。互換性のある最新のpowermock https://github.com/powermock/powermock/wiki/Mockito#supported-versions

の互換性マトリックスを参照してくださいMockitoは、次のとおりです。PowerMockと2.8.x1.7.0

関連する問題