java在Kotlin中编写单元测试,共享变量?
我正在尝试在Kotlin中创建一些功能测试,以便使用Rest-Assured库向Cart Java服务发出请求
因为我希望测试按程序进行,所以我希望能够存储第一个API请求的结果,并将其传递给下一个单元测试
即
createCartTest()-->;卡蒂德-->;getCartForWebsiteTest(cartId)
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())
}
}
从未真正使用过Kotlin,因此正在寻找测试所有API端点的最佳方法的建议
还是在同一个函数中发出另一个请求并将结果传递给下一步更好
在测试中共享变量的最佳方式是什么
谢谢
# 1 楼答案
JUnit不提供任何关于测试顺序的保证,测试不应该相互依赖,也不应该改变共享状态
实际上,最简单的解决方案是在同一个测试中执行这两个请求
此外,还可以使用JUnit test fixtures设置一组测试所需的对象。如果在几个测试中需要
cartId
,这是首选选项见:^{} ,另一个question about ^{} and ^{}
# 2 楼答案
如果你在很多测试中都有共同的设置过程,我倾向于同意上面的建议,但否则你应该让每个测试都是独立的。Kotlin可以使这一点变得非常好——请参见https://gjesse.github.io/post/unit-testing-with-kotlin -mini-dsls/了解为单个测试包装通用操作类型的描述