我是一个数据驱动的测试:
def "#testDB : create customer using the caller interface"(){
given:
TestUtils.install(testDB)
caller = new Caller(testDB.dbInterface.dataSource())
def firstName = "Abdullah"
def lastName = "Mohammad"
when:
def custId = caller.call("create_customer", params(of(firstName, VARCHAR), of(lastName, VARCHAR)),
paramTypes(INTEGER), {it.getInt(1)});
then:
custId == custIdFromDb
cleanup:
TestUtils.rollback(testDB)
where:
testDB << testDBs
custIdFromDb << [0, 1]
}
是否可以将给定块中的前两行分隔为setup()
:
TestUtils.install(testDB)
caller = new Caller(testDB.dbInterface.dataSource())
和清理块进入cleanup
方法?
完整的测试用例可以found at gihub
答案 0 :(得分:1)
不,因为您在where:
块中定义的内容仅在相应的要素方法中本地可用,因此要在方法内部进行管理。因此,初始化很好地保留在given:
部分(或setup:
,这只是一个别名)和cleanup:
部分内的清理。
然而,对于规范类中的每个单一要素方法,都会执行setup()
和cleanup()
方法,即那些只应用于所有要素方法通用的数据,并且每次都需要初始化与@Shared
变量相比,执行了一项功能,而setupSpec()
变量将在<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta name="author" content="name">
<title>~name@inferno</title>
<link href="favicon.ico" rel="icon">
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
<style type="text/css">
body {
background: url(x.jpg) no-repeat;
background-size: cover;
background-color: #0A0F14;
-moz-appearance: none;
}
td {
transition: all 2s ease 0.9s;
color: inherit;
-moz-appearance: none;
}
a:link {
color: inherit;
text-decoration: none;
}
a:visited {
color: inherit;
text-decoration: none;
}
a:hover {
color: inherit;
text-decoration: none;
}
a:active {
color: inherit;
text-decoration: none;
}
a {
font-family: "Segoe UI";
font-size: 12px;
font-weight: bold;
outline: none;
float: right;
margin-right: 15px;
margin-top: -3px;
}
td:hover{
background: rgba(16, 21, 27, 0);
}
.box {
background: #10151B;
border-radius: 0px 0px 15px 10px;
line-height: 50px;
width: 140px;
height: 592px;
position: fixed;
top: 1px;
bottom: 0px;
left: 0px;
}
.icon {
color: #D12248;
float: left;
margin-top: 10px;
text-indent: 5px;
}
.icon2 {
color: #D19011;
float: left;
margin-top: 10px;
text-indent: 5px;
}
.icon3 {
color: #57A3D1;
float: left;
margin-top: 10px;
text-indent: 5px;
}
.icon4 {
color: #AAD130;
float: left;
margin-top: 10px;
text-indent: 5px;
}
.icon5 {
color: #4ED1B3;
float: left;
margin-top: 10px;
text-indent: 5px;
}
.icon6 {
color: #98D1CE;
float: left;
margin-top: 10px;
text-indent: 5px;
}
初始化。