/
TestForSpec.groovy
160 lines (124 loc) · 3.23 KB
/
TestForSpec.groovy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
package grails.test.mixin
import org.junit.Test
import spock.lang.Specification
import org.apache.commons.logging.Log
class TestForSpec extends Specification{
void "Test that imports aren't needed for junit"() {
when:
def test = junit4Test
then:
test != null
test.getClass().getDeclaredMethod("testIndex", null).getAnnotation(Test.class) != null
test.retrieveLog() instanceof Log
}
void "Test junit 3 test doesn't get annotation"() {
when:
def test = junit3Test
then:
test != null
test.getClass().getDeclaredMethod("testIndex", null).getAnnotation(Test.class) == null
test.retrieveLog() instanceof Log
}
void "Test spock test doesn't get annotation"() {
when:
def test = spockTest
then:
test != null
test.getClass().getDeclaredMethod("Test index", null).getAnnotation(Test.class) == null
test.retrieveLog() instanceof Log
}
void "Test that TestFor doesn't apply if the test is not JUnit 4, Junit 4 or Spock"() {
when:
def test = invalidTest
then:
test != null
test.getClass().getDeclaredMethod("testBlah", null).getAnnotation(Test.class) == null
when:
test.retrieveLog() instanceof Log
then:
thrown MissingPropertyException
}
def getInvalidTest() {
final gcl = new GroovyClassLoader()
gcl.parseClass('''
class SimpleController {
def index = {
render "Hello"
}
}
''')
gcl.parseClass('''
import grails.test.mixin.*
@TestFor(SimpleController)
class ControllerHelper {
void testBlah() {}
def retrieveLog() { log }
}
''').newInstance()
}
def getSpockTest() {
final gcl = new GroovyClassLoader()
gcl.parseClass('''
class SimpleController {
def index = {
render "Hello"
}
}
''')
gcl.parseClass('''
import grails.test.mixin.*
@TestFor(SimpleController)
class ControllerTestForTests extends spock.lang.Specification {
void "Test index"() {
when:
controller.index()
then:
response.text == 'Hello'
}
def retrieveLog() { log }
}
''').newInstance()
}
def getJunit4Test() {
final gcl = new GroovyClassLoader()
gcl.parseClass('''
class SimpleController {
def index = {
render "Hello"
}
}
''')
gcl.parseClass('''
import grails.test.mixin.*
@TestFor(SimpleController)
class ControllerTestForTests {
void testIndex() {
controller.index()
assert response.text == 'Hello'
}
def retrieveLog() { log }
}
''').newInstance()
}
def getJunit3Test() {
final gcl = new GroovyClassLoader()
gcl.parseClass('''
class SimpleController {
def index = {
render "Hello"
}
}
''')
gcl.parseClass('''
import grails.test.mixin.*
@TestFor(SimpleController)
class ControllerTestForTests extends GroovyTestCase {
void testIndex() {
controller.index()
assert response.text == 'Hello'
}
def retrieveLog() { log }
}
''').newInstance()
}
}