Tag: jmockit

如何用jmockit模拟kotlin中的顶级函数

假设我有一个函数在下面测试,在名为“Utils.kt”的文件中声明 //Utils.kt fun doSomething() = 1 然后我们创建一个测试类来测试它 //UtilsTest.kt @RunWith(JMockit::class) class UtilsTest { @Test fun testDoSomething() { object : Expectation() { init { doSomething() result = 2 } } assertEquals(2, doSomething()) } } 我想嘲弄doSomething ,使它返回2 ,但它不会工作,实际结果是1 有没有解决方法?

JMockit能和scala一起工作吗?

我GOOGLE了一点,在我看来,这是可能的。 但是当我尝试这样的: class Calc { def sum(first: Int, second: Int) = { first + second } } 和“考”类: class CalcTest { @Test def testSum(@Mocked test: Calc) { new NonStrictExpectations() {{ test.sum(2, 3) times = 1 result = Int.box(5) }} Assert.assertEquals(5, test.sum(2, 3)) } } 我有一个例外: java.lang.IllegalAccessError:试图从com.kvg.client.CalcTest类访问类mockit.Invocations $$ com.vg.client.CalcTest $$ anon $ 1。(CalcTest.scala:11)at com.kvg .client.CalcTest.testSum(CalcTest.scala:9)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native […]

如何在Kotlin中模拟静态方法?

我试图在Kotlin中用jMockit模拟一个静态方法: object: MockUp<System>() { @Mock fun getProperty(name: String) = "tagB" } 但是我得到以下错误: 无法加载日志管理器“tagB”java.lang.ClassNotFoundException:tagB在java.net.URLClassLoader.findClass(URLClassLoader.java:381)在java.lang.ClassLoader.loadClass(ClassLoader.java:424)在sun.misc.Launcher $ java.util.logging.LogManager中的$ AppClassLoader.loadClass(Launcher.java:331)java.util.logging.LogManager $ 1.run(LogManager.java:195)java.util.logging上的java.lang.ClassLoader.loadClass(ClassLoader.java:357) .LogManager $ 1.run(LogManager.java:181)at java.util.AccessController.doPrivileged(Native Method)at java.util.logging.LogManager。(LogManager.java:181)at java.util.logging.Logger.getPlatformLogger (Logger.java:572)at sun.util.logging.LoggingSupport.getLogger(LoggingSupport.java:100)at sun.util.logging.PlatformLogger $ java.util.logging.LoggingProxyImpl.getLogger(LoggingProxyImpl.java:41)在sun.util.logging.PlatformLogger上使用JavaLoggerProxy。(PlatformLogger.java:602);在sun.util.logging上使用sun.util.logging.PlatformLogger。(PlatformLogger.java:239)使用JavaLoggerProxy。(PlatformLogger.java:597)。 PlatformLog java中的sun.util.locale.provider.LocaleProviderAdapter(LocaleProviderAdapter.java:165)处的sun.util.locale.provider.LocaleServiceProviderPool.config(LocaleServiceProviderPool.java:142)处的ger.getLogger(PlatformLogger.java:198) (Formatter.java:1892)at java.util.Formatter。(Formatter.java:1892)at java.util.Formatter。(Formatter.Formatter.Formatter。 .java:1914)at org.junit.runner.runner.Description.formatDisplayName(Description.java:114)at org.junit.runner.Description.createTestDescription(Description。java.lang.String.format(String.java:2940) java:73)at io.kotlintest.TestCase.getDescription(testcase.kt:45)at io.kotlintest.TestBase.descriptionForSuite $ kotlintest_main(TestBase.kt:153)at io.kotlintest.TestBase.getDescription $ kotlintest_main(TestBase.kt :39)at com.intellij.junit4.JUnit4IdeaTestRunner.getDescription(JUnit4IdeaTestRunner.java:123) )at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:99)at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:42)at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart( JUnitStarter.java:234)在sun.reflect.NativeMethodAccessorImpl.invoke(Native方法)上的com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:74) java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at […]

用JMockit和Kotlin捕获对象

我已经使用了JMockit很久了,我非常喜欢它。 但是,我遇到了一个我似乎无法解决的问题。 查看下面的一些Kotlin测试代码片段,测试Kotlin生产代码。 @Injectable lateinit var experimentStorage: ExperimentStorage … val experimentCaptor = mutableListOf<Experiment>() object : Verifications() { init { experimentStorage.save(withCapture(experimentCaptor)) } } 当我运行我的测试时,我得到以下错误: java.lang.IllegalStateException:withCapture(experimentCaptor)不能为null 我100%确定我的生产代码正确地执行存储,因为当我替换下面的捕获时,我的测试成功: object : Verifications() { init { experimentStorage.save(withAny(experiment)) } } 有没有人有经验捕捉Kotlin与JMockit(1.28)的参数? 我究竟做错了什么? 我想它与init块有关,因为在Java中你将使用静态空间…

与jmockit一起使用kotlin

我需要一些建议,使用kotlin使用jmockit。 (CUT)这是我的(Java)测试类: public final class NutritionalConsultant { public static boolean isLunchTime() { int hour = LocalDateTime.now().getHour(); return hour >= 12 && hour <= 14; } } (j.1)这是一个正在运行的Java测试类 @RunWith(JMockit.class) public class NutritionalConsultantTest { @Test public void shouldReturnTrueFor12h(@Mocked final LocalDateTime dateTime) { new Expectations() {{ LocalDateTime.now(); result = dateTime; dateTime.getHour(); result = 12; }}; boolean isLunchTime = […]