FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
JavaExercises/Java 3/HW7Lesson.java at master · biblelamp/JavaExercises · GitHub
biblelamp
/
JavaExercises
Public
Notifications
You must be signed in to change notification settings
Fork
130
Star
153
Code
Issues
1
Pull requests
9
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Issues
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
JavaExercises
/
Java 3
/
HW7Lesson.java
Copy path
More file actions
More file actions
Latest commit
History
History
History
122 lines (105 loc) · 3.42 KB
Breadcrumbs
JavaExercises
/
Java 3
/
HW7Lesson.java
Copy path
File metadata and controls
122 lines (105 loc) · 3.42 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
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
/**
* Java. Level 3. Lesson 7. Homework
*
* @author Sergey Iryupin
* @version Jul 30, 2018
* @link https://github.com/biblelamp
*/
import
java
.
lang
.
annotation
.
Target
;
import
java
.
lang
.
annotation
.
ElementType
;
import
java
.
lang
.
annotation
.
Retention
;
import
java
.
lang
.
annotation
.
RetentionPolicy
;
import
java
.
lang
.
reflect
.
Method
;
import
java
.
util
.
ArrayList
;
import
java
.
util
.
Comparator
;
import
java
.
util
.
List
;
public
class
HW7Lesson
{
public
static
void
main
(
String
[]
args
) {
TestingClass
.
start
(
TestingClass
.
class
);
}
}
class
TestingClass
{
public
static
void
start
(
Class
cls
) {
performTests
(
cls
);
}
private
static
void
performTests
(
Class
cls
)
throws
RuntimeException
{
TestingClass
testingObj
=
null
;
try
{
testingObj
= (
TestingClass
)
cls
.
newInstance
();
}
catch
(
Exception
e
) {
e
.
printStackTrace
();
return
;
}
Method
beforeMethod
=
null
;
Method
afterMethod
=
null
;
Method
[]
methods
=
cls
.
getMethods
();
List
<
MethodWithPriority
>
testingMethods
=
new
ArrayList
<>();
for
(
Method
method
:
methods
)
if
(
method
.
getAnnotation
(
BeforeSuite
.
class
) !=
null
) {
if
(
beforeMethod
!=
null
)
throw
new
RuntimeException
(
"The method with the @BeforeSuite annotation should be one"
);
beforeMethod
=
method
;
}
else
if
(
method
.
getAnnotation
(
AfterSuite
.
class
) !=
null
) {
if
(
afterMethod
!=
null
)
throw
new
RuntimeException
(
"The method with the @AfterSuite annotation should be one"
);
afterMethod
=
method
;
}
else
if
(
method
.
getAnnotation
(
Test
.
class
) !=
null
){
Test
annotationTst
=
method
.
getAnnotation
(
Test
.
class
);
testingMethods
.
add
(
new
MethodWithPriority
(
method
,
annotationTst
.
value
()));
}
testingMethods
.
sort
(
Comparator
.
comparing
(
MethodWithPriority
::
getPriority
));
try
{
if
(
beforeMethod
!=
null
)
beforeMethod
.
invoke
(
testingObj
);
for
(
MethodWithPriority
methodWP
:
testingMethods
)
methodWP
.
method
.
invoke
(
testingObj
);
if
(
afterMethod
!=
null
)
afterMethod
.
invoke
(
testingObj
);
}
catch
(
Exception
e
){
e
.
printStackTrace
();
}
}
@
Test
(
value
=
5
)
public
void
Test5
() {
System
.
out
.
println
(
"Performed Test №5"
);
}
@
Test
(
value
=
3
)
public
void
Test2
(){
System
.
out
.
println
(
"Performed Test №2"
);
}
@
Test
(
value
=
1
)
public
void
Test1
(){
System
.
out
.
println
(
"Performed Test №1"
);
}
@
BeforeSuite
public
void
BeforeAll
(){
System
.
out
.
println
(
"This method is performed before all"
);
}
@
AfterSuite
public
void
AfterAll
() {
System
.
out
.
println
(
"This method is performed after all"
);
}
}
class
MethodWithPriority
{
public
Method
method
;
public
Integer
priority
;
public
MethodWithPriority
(
Method
method
,
int
priority
) {
this
.
method
=
method
;
this
.
priority
=
priority
;
}
public
Integer
getPriority
() {
return
priority
;
}
}
@
Retention
(
RetentionPolicy
.
RUNTIME
)
@
Target
(
ElementType
.
METHOD
)
@interface
BeforeSuite
{}
@
Retention
(
RetentionPolicy
.
RUNTIME
)
@
Target
(
ElementType
.
METHOD
)
@interface
AfterSuite
{}
@
Retention
(
RetentionPolicy
.
RUNTIME
)
@
Target
(
ElementType
.
METHOD
)
@interface
Test
{
int
value
();
}
Back
|
FazBrowse Home
|
New Git URL