Tag: 嘲笑

为什么这个Android Instrumentation测试调用Activity两次创建?

我有这个测试课: class InspirationalQuoteInstrumentedTest { private lateinit var server: MockWebServer @Rule @JvmField val mActivityRule: ActivityTestRule<InspirationalQuoteActivity> = ActivityTestRule(InspirationalQuoteActivity::class.java) @Before fun setUp() { server = MockWebServer() server.start() Constants.BASE_URL = server.url("/").toString() } @After fun tearDown() { server.shutdown() } @Test fun ensureTheQuoteOfTheDayIsDisplayed() { println("Base URL: ${Constants.BASE_URL}") Log.e(TAG,"Base URL: ${Constants.BASE_URL}") val response200 = this::class.java.classLoader.getResource("200.json").readText() val jsonResponse = JSONObject(response200) val expectedQuote = […]

嘲笑Kotlin和Mockito的通用接口

我正在尝试使用Mockito模拟Kotlin中的通用接口。 但到目前为止,我没有找到自然的解决办法。 鉴于: interface X<T> { fun x(): T } fun f(x: X<Int>) = xx() 我可以用下面的任何一个来模拟X : val x = f(Mockito.mock(X::class.java) as X<Int>) 但是这会产生一个“不受控制的投射”的警告。 @Mock lateinit var x: X<Int> 但我不想使用@Mock注释,因为我喜欢让我的字段最终。 引入一个辅助函数,就像mockito-kotlin库所做的那样: inline fun <reified T : Any> mock(): T = Mockito.mock(T::class.java)!! 然后像这样调用它: val x: X<Int> = mock() 但我不想使用帮助函数。 有没有一个优雅的纯Kotlin方式来模拟与Mockito的通用接口? (我宁愿没有警告的一个版本。)

在Spock单元测试中,模拟方法没有被调用

我试图使用Spock框架来实现单元测试,这是我的测试看起来像: def setup() { scrollableResultsMock = Mock(ScrollableResults) paymentRepositoryMock = Mock(PaymentRepository) paymentRegistryService = new PaymentRegistryService(paymentRepositoryMock) } @Unroll def 'should correctly process'() { given: paymentRepositoryMock.findUnconfirmedTransactions(_ as LocalDate, _ as Days) >> scrollableResultsMock … } 这里是我试图注入嘲笑对象的类: @Service open class PaymentRegistryService @Autowired constructor( val paymentRepository: PaymentRepository ) { @Transactional open fun parseRegistryFileStream(input: InputStream): LinkedList<Pair<Long, String>> { … val registry […]

什么是Java相当于Kotlin的函数类型?

我有Kotlin代码和Java测试代码。 由于Kotlin和Mockito不是最好的朋友,所以我没有将测试代码迁移到Kotlin 。 在Kotlin我有块类型的方法。 例如: open fun getProductInfo(resultListener: (List<Deal>)->Unit, errorListener: (Throwable)->Unit) { … } 现在我想在Java测试中存储这个方法。 什么是类型的Java相当于什么? 换句话说,我应该写下面的代码: doAnswer(invocation -> { ??? resultListener = (???) invocation.getArguments()[0]; // call back resultListener return null; }).when(api).getProductInfo(any(), any());

没有开放课程,可以和Kotlin一起使用Mockito吗?

正如我们可能知道的那样,默认情况下Kotlin类曾经定义过,除非明确声明为open ,否则它是最终的。 当我们想用Mockito来模拟它时,这将会带来挑战。 我们需要明确宣布它是open 。 有没有办法我们可以避免宣布它是open而能够为我们的测试模拟它?

Kotlin – Mockito不能模拟/间谍(Spring REST API)

由于Kotlin中的所有课程都是默认的最终课程,所以Mockito不能窥探最后的课程: Cannot mock/spy class bye.persistence.jdbcTrial Mockito cannot mock/spy following: – final classes – anonymous classes – primitive types 而这个指南 (7月6日,丹尼·布鲁斯勒(Danny Preussler))说,一个框架是解决这个问题的必要条件。 现在我想知道,是否有可能测试一个REST API(使用Spring MockMvc)。 以下是我的测试代码: package byeTest.persistenceTest import bye.domain.User import bye.persistence.jdbcTrial import bye.spring.GreetingController import byeTest.persistenceTest.RestAPITest.RootConfig import org.junit.Before import org.junit.Test import org.junit.runner.RunWith import org.mockito.BDDMockito.given import org.mockito.Mockito import org.springframework.beans.factory.annotation.Autowired import org.springframework.context.annotation.Bean import org.springframework.context.annotation.Configuration import org.springframework.http.MediaType import org.springframework.test.context.ContextConfiguration […]

用Java + Mockito嘲笑Kotlin方法

所以我将一个小的Java代码库迁移到Kotlin只是为了好玩,而且我已经迁移了这个Java类: public class Inputs { private String engineURL; private Map<String, String> parameters; public Inputs(String engineURL, Map<String, String> parameters) { this.engineURL = engineURL; this.parameters = parameters; } public String getEngineURL() { return engineURL; } public String getParameter(String key) { return parameters.get(key); } } 到这Kotlin表示: open class Inputs (val engineURL: String, private val parameters: Map<String, String>) { […]

嘲笑Kotlin的最后一场

我是Mockito Kotlin的新手。 下面的代码有一个engine引起的错误,一个不被模拟的不可变字段。 我花了很多时间来解决这个问题。 我发现一种嘲笑的方式,直到我不明白,不满足。 将一个字段移到构造函数中。 class Car(val engine: Engine) { … } 改变为可变字段。 private var engine = Engine() 有没有其他的方法? class Car { private val engine = Engine() // here var state: String? = null fun move() { state = engine.state } } @RunWith(MockitoJUnitRunner::class) class CarTest { @Mock private lateinit var mockedEngine: Engine @InjectMocks private […]

如何模拟Kotlin单身物件?

给定一个Kotlin单身对象和一个叫它的方法的乐趣 object SomeObject { fun someFun() {} } fun callerFun() { SomeObject.someFun() } 有没有办法模拟调用SomeObject.someFun() ?

嘲笑Kotlin的扩展功能

如何在测试中使用Mockito或PowerMock来模拟Kotlin扩展功能? 由于它们是静态解析应该作为静态方法调用还是非静态?