我试图在Kotlin中创建一些功能测试,以使用Rest-Assured库向Cart Java服务发出请求。
因为我希望测试按程序进行,所以我希望能够存储第一个API请求的结果,并将其传递给下一个单元测试。
即
createCartTest()--
class CartTest : RestAssuredSupport {
val port = 8080
val url = "http://localhost:"
val cartId = null
/**
* Create a cart object
*/
@Test fun createCartTest() {
given().
now().
body("websiteId=1").
contentType(ContentType.URLENC).
post(url + port + "/orders/cart/create.do").
then().
statusCode(200).
body("summary.numItems", equalTo(0)).
body("summary.visibleNumItems", equalTo(0)).
body("summary.cartId", notNullValue()).
body("summary.version", notNullValue())
}
/**
* Fetch a cart object created by websiteId and cartId
*/
@Test fun getCartForWebsite() {
given().
now().
body("websiteId=1&cartId=" + cartId).
contentType(ContentType.URLENC).
post(url + port + "/orders/cart/getCartForWebsite.do").
then().
statusCode(200).
body("summary.numItems", equalTo(0)).
body("summary.visibleNumItems", equalTo(0)).
body("summary.cartId", equalTo(cartId)).
body("summary.version", notNullValue())
}
}
从来没有真正使用过静态编程语言,所以寻找测试所有APIendpoint的最佳方法的建议。
还是在同一个函数中发出另一个请求并将结果传递给下一步更好?
跨测试共享变量的最佳方式是什么?
谢谢
如果您在许多测试中都有通用的设置过程,我倾向于同意上面的建议,否则您应该使每个测试都是独立的。Kotlin可以做得很好-看到了吗https://gjesse.github.io/post/unit-testing-with-kotlin---mini-dsls/ 有关为单个测试包装常见操作类型的说明。
单元测试应该是独立的。默认情况下,您无法控制单元测试的执行顺序。请阅读这里:如何在JUnit4中以特定顺序运行测试方法?
"或者在同一个函数中再发出一个请求,然后将结果传递给下一步会更好吗?"
这是正确的,我们通常称之为旅程测试
JUnit不提供任何关于测试顺序的保证,测试不应该相互依赖,也不应该改变共享状态。
实际上,最简单的解决方案是在同一个测试中执行这两个请求。
此外,您可以使用JUnit测试夹具来设置一组测试所需的对象。如果在多个测试中需要cartId
,这是首选选项。
class CartTest : RestAssuredSupport {
// ...
var cartId: Int by Delegates.notNull()
@Before fun setUp() {
// Set up the cartId. This will run before each test. Use @BeforeClass to run once
}
@Test fun getCartForWebsite() { /* ... */ }
}
请参见:Delegates.notNull()
,另一个关于@前
和@BeforeClass
的问题。
上周我更新了Kotlin 1.5,昨天看到谷歌打算让Jetpack成为设计UI的首选选项后,我想做一些测试。 问题是将我的项目更新为静态编程语言1.5,当尝试构建项目时,我得到以下错误: 静态编程语言1.5与Jetpack Compose不兼容吗?在谷歌搜索问题后,我找到了版本,其中提到了Jetpack Compose,但不是以“不兼容”的方式。 你对此有任何答案吗?我应该使用吗?在这种情况下,我
我试图在kotlin中的两个活动之间传递一个值,但如果我使用下面的代码,那么我只得到“Hello World”默认值,而不是PREFERENCE_NAME值。我的文本ID名称是android: id="@id/tv_count"感谢任何帮助。
我试图用OkHttp和Cucumber在静态编程语言中设置一个Spring启动项目,并且在运行Cucumber任务时遇到以下错误。如何修复? 还有build gradle kts片段 我看到了这个错误https://github.com/square/okio/issues/647看起来可能是它,并修复了这个build.gradle,我如何将其翻译为kotlinbuild.gradle.kts?
我不会告诉你有关后台任务的单元测试的任何内容,因为Hangfire没有添加任何特定方法 (除了 IJobCancellationToken 接口参数)去改变任务。使用您最喜爱的工具,并照常写入单元测试。本节介绍如何测试创建的后台任务。 所有的代码示例都使用静态 BackgroundJob 类来告诉你如何做这个或那些东西,只是出于简单演示的目的。但是当你想测试调用的静态方法时,会变得很痛苦。 不用担
如图所示,https://stackoverflow.com/a/16639438/8949356,在Java中,当声明的类是公共类时,可以重写其函数 但是我想知道如何用静态编程语言编写完全相同的代码,我已经尝试了很多,但没有找到任何关于这个主题的东西。我可以在Java中去做这件事,但我的其余代码是用静态编程语言编写的,而且我不能一直带着这种怀疑;静态编程语言对我来说是一个很好的工具,我想学习它。
我在java中使用mockito编写单元测试。 这就是我要测试的声明。 电影是电影名称的集合,是识别电影的关键。 我嘲笑了守望者班 Mockito.when(watcher.watch(Matchers.any(Set.class))) “thenReturn”中包括什么??