�gӭ���R�ЈD�W(w��ng) Ո | ע��

���] JUnit��(sh��)��(zh��n)(��3��)

�����磺�����]늳���������r(sh��)�g��2023-06-01
�_���� 16�_ 퓔�(sh��)�� 496
�� �D �r(ji��):¥97.9(7.0��) ���r(ji��)  ¥139.8 ��䛺�ɿ������T�r(ji��)
������Ǖ�����>

JUnit��(sh��)��(zh��n)(��3��) ���(qu��n)��Ϣ

JUnit��(sh��)��(zh��n)(��3��) ������ɫ

1.JUnit 5��(sh��)��(zh��n)D�������w��JUnit 4��JUnit 5�w����ܛ���yԇԭ�t�ȃ�(n��i)����׌�x�������˽�JUnit��ܡ�

2.��(x��)���v��Java�_�l(f��)�ˆT�M(j��n)�І�Ԫ�yԇ�ͼ��ɜyԇ�Č�(sh��)�ÿ������Ч�yԇ�Ԅӻ����yԇ�(q��)���_�l(f��)���О��(q��)���_�l(f��)��

4.�����挍(sh��)�����еđ�(y��ng)�ó�����������Spring��Spring Boot �Լ� REST API �yԇ�����õ���������ڌ�(sh��)�H�(xi��ng)Ŀ��ʹ��JUnit�M(j��n)�Мyԇ��

5.�� JUnit 5 �c Maven/Gradle �Y(ji��)������ʹ�����ṩ������(sh��)�õĽ��h�ͼ����������x�����(xi��ng)Ŀ�п��ٶ���Ч��ʹ��JUnit�����

JUnit��(sh��)��(zh��n)(��3��) ��(n��i)�ݺ���

����ȫ���BJUnit 5�������Լ�����Ҫ��(y��ng)����ȫ����22�����֞��岿�֡�**���ֽ�BJUnit �ĺ�����JUnit���wϵ�Y(ji��)��(g��u)����JUnit 4��JUnit 5�w����ܛ���yԇԭ�t�ȃ�(n��i)�����ڶ����ֽ�Bܛ���yԇ�|(zh��)������stub��mock object�M(j��n)�Мyԇ��������(n��i)�yԇ�ȃ�(n��i)�ݣ��������ֽ�B��Maven��Gradle�����\(y��n)��JUnit�yԇ��IDE��JUnit 5��֧����JUnit 5�ij��m(x��)���ɵȃ�(n��i)�������IJ��ֽ�BJUnit 5�U(ku��)չģ�ͣ���ʾ�Ӝyԇ��Spring��Spring Boot��REST API�Լ���(sh��)��(j��)�쑪(y��ng)�ó���Ĝyԇ�ȃ�(n��i)�������岿�ֽ�Bʹ��JUnit 5�M(j��n)�Мyԇ�(q��)���_�l(f��)���О��(q��)���_�l(f��)���Լ���JUnit 5��(sh��)�F(xi��n)�yԇ���������Եȃ�(n��i)�ݡ� �������m�τ����|JUnit��ܵ�Java�_�l(f��)�ˆT��x��Ҳ�m����Ҫ�˽�JUnit 5�����Եġ���(j��ng)�(y��n)�S����JUnit�_�l(f��)�ˆT�W(xu��)��(x��)�������m����I(y��)��Java�_�l(f��)�ˆT��x������߀������ߵ�ԺУ�W(xu��)����ܛ���yԇ���n�̵ą����Õ���

JUnit��(sh��)��(zh��n)(��3��) Ŀ�

�� һ���֡�JUnit



�� 1�¡�JUnit�� 3

1.1 �C������Ŀ��\(y��n)���� 4

1.2 �����_ʼ 5

1.2.1 ��Ԫ�yԇ��ܵ�Ҏ(gu��)�t 8

1.2.2 ���ӆ�Ԫ�yԇ 8

1.3 ���bJUnit 9

1.4 ʹ��JUnit�yԇ 11

1.5 �Y(ji��) 13

�� 2�¡�̽��JUnit�ĺ��� 14

2.1 ����ע�� 15

2.1.1 @DisplayNameע�� 17

2.1.2 @Disabledע�� 18

2.2 Ƕ�לyԇ 20

2.3 ��(bi��o)ӛ�yԇ 21

2.4 ���� 22

2.5 ���O(sh��) 26

2.6 JUnit 5����هע�� 28

2.6.1 TestInfoParameterResolver 28

2.6.2 TestReporterParameterResolver 29

2.6.3 RepetitionInfoParameterResolver 30

2.7 �؏�(f��)�yԇ 30

2.8 ����(sh��)���yԇ 32

2.9 �ӑB(t��i)�yԇ 35

2.10 ʹ��Hamcrest ƥ���� 37

2.11 �Y(ji��) 41

��3�¡�JUnit���wϵ�Y(ji��)��(g��u) 42

3.1 ܛ���wϵ�Y(ji��)��(g��u)�ĸ������Ҫ�� 42

3.1.1 ����һ���Ԓ�� 43

3.1.2 ���¶����\(y��n)��Ь������ 43

3.2 JUnit 4���wϵ�Y(ji��)��(g��u) 44

3.2.1 JUnit 4ģ�K�� 44

3.2.2 JUnit 4�\(y��n)���� 45

3.2.3 JUnit 4Ҏ(gu��)�t 47

3.2.4 JUnit 4�wϵ�Y(ji��)��(g��u)��ȱ�c(di��n) 52

3.3 JUnit 5���wϵ�Y(ji��)��(g��u) 52

3.3.1 JUnit 5ģ�K�� 52

3.3.2 JUnit Platform 53

3.3.3 JUnit Jupiter 53

3.3.4 JUnit Vintage 54

3.3.5 JUnit 5�wϵ�Y(ji��)��(g��u)��ȫ�� 54

3.4 �Y(ji��) 56



��4�¡���JUnit 4��JUnit 5�w�� 57

4.1 ��JUnit 4��JUnit 5��Խ 57

4.2 �������ه�(xi��ng) 58

4.3 ע����ͷ��� 60

4.3.1 �ȃr(ji��)��ע����ͷ��� 60

4.3.2 ��͘�(bi��o)ӛ 64

4.3.3 �w��Hamcrestƥ�������� 69

4.3.4 Ҏ(gu��)�t�c�U(ku��)չģ�� 71

4.3.5 �Զ��xҎ(gu��)�t 74

4.4 �Y(ji��) 78

��5�¡�ܛ���yԇԭ�t 79

5.1 ��Ԫ�yԇ�ı�Ҫ�� 79

5.1.1 �������ߵĜyԇ���w�� 80

5.1.2 ��߈F(tu��n)�(du��)�Ĺ���Ч�� 80

5.1.3 �z�y��˥���E��͜p���{(di��o)ԇ�Δ�(sh��) 80

5.1.4 ���ŵ��ؘ�(g��u) 80

5.1.5 ���M(j��n)��(sh��)�F(xi��n) 82

5.1.6 �ęn���A(y��)���О� 82

5.1.7 ���ô��a���w�ʺ�����ָ��(bi��o) 83

5.2 �yԇ��� 83

5.2.1 ��Ԫ�yԇ 84

5.2.2 ���ɜyԇ 84

5.2.3 ϵ�y(t��ng)�yԇ 85

5.2.4 �(y��n)�՜yԇ 85

5.3 �ںМyԇ�Ͱ׺Мyԇ�Č��� 86

5.3.1 �ںМyԇ 86

5.3.2 �׺Мyԇ 86

5.3.3 �ںМyԇ�Ͱ׺Мyԇ�ă�(y��u)�c(di��n)��ȱ�c(di��n) 87

5.4 �Y(ji��) 88



�ڶ����֡���ͬ�Ĝyԇ����





��6�¡��yԇ�|(zh��)�� 91

6.1 �yԇ���w�ʶ��� 91

6.1.1 �yԇ���w�ʺ��� 92

6.1.2 ���a���w�ʶ������� 93

6.2 �������ڜyԇ�Ĵ��a 96

6.2.1 ���⹫��API���s 97

6.2.2 �p����ه 97

6.2.3 ��(chu��ng)�����εĘ�(g��u)�췽�� 98

6.2.4 ��ѭ�����ط��t 99

6.2.5 ���_�[�ص���ه�(xi��ng)��ȫ�֠�B(t��i) 100

6.2.6 ��(y��u)��ʹ�÷��ͷ��� 101

6.2.7 �M�σ�(y��u)���^�� 102

6.2.8 ���B(t��i)��(y��u)�ڗl�� 102

6.3 �yԇ�(q��)���_�l(f��) 104

6.3.1 �{(di��o)���_�l(f��)���� 104

6.3.2 TDD�ăɂ����IJ��E 105

6.4 ���(q��)���_�l(f��) 106

6.5 ͻ׃�yԇ 106

6.6 �_�l(f��)�����еĜyԇ 107

6.7 �Y(ji��) 110

��7�¡���stub�M(j��n)�д����Ȝyԇ 111

7.1 stub���� 112

7.2 ��stub�yԇһ��HTTP�B�� 113

7.2.1 �x��stub��ʹ�÷��� 115

7.2.2 ��Jetty�䮔(d��ng)Ƕ��ʽ����(w��)�� 115

7.3 ��stub��Q����(w��)���YԴ 117

7.3.1 ��(g��u)���� һ��stub�yԇ 117

7.3.2 ��� һ��stub�yԇ 120

7.4 ��Q�B�� 120

7.4.1 ��(chu��ng)���Զ��x��URL�f(xi��)�h̎���� 121

7.4.2 ��(chu��ng)��һ��JDK��HttpURLConnection stub 122

7.4.3 �\(y��n)�Мyԇ 123

7.5 �Y(ji��) 124

��8�¡���mock object�M(j��n)�Мyԇ 125

8.1 mock object���� 125

8.2 ��mock object�M(j��n)�І�Ԫ�yԇ 126

8.3 ��mock object�M(j��n)���ؘ�(g��u) 129

8.3.1 �ؘ�(g��u)ʾ�� 130

8.3.2 �ؘ�(g��u)����Ŀ��] 131

8.4 ģ�MHTTP�B�� 133

8.4.1 mock object�Ķ��x 133

8.4.2 ʾ�������Ĝyԇ 134

8.4.3 �� һ���Lԇ�����εķ����ؘ�(g��u)���� 135

8.4.4 �ڶ����Lԇ��ʹ����S�M(j��n)���ؘ�(g��u) 137

8.5 ��mocks����������ľ�R 139

8.6 mock��ܺ��� 141

8.6.1 ʹ��EasyMock 142

8.6.2 ʹ��JMock 146

8.6.3 ʹ��Mockito 150

8.7 �Y(ji��) 153

��9�¡�������(n��i)�yԇ 154

9.1 ��(bi��o)��(zh��n)��Ԫ�yԇ�ľ����� 154

9.2 mock object��Q���� 155

9.3 ������(n��i)�yԇ�IJ��E 157

9.3.1 ��(sh��)�F(xi��n)���� 157

9.3.2 ������(n��i)�yԇ��� 158

9.4 stub��mock object��������(n��i)�yԇ�Č��� 158

9.4.1 ��stub���u�r(ji��) 159

9.4.2 ��mock object���u�r(ji��) 159

9.4.3 ��������(n��i)�yԇ���u�r(ji��) 160

9.5 ��Arquillian�M(j��n)�Мyԇ 161

9.6 �Y(ji��) 168



�������֡��\(y��n)��JUnit 5����������





�� 10�¡���Maven 3���\(y��n)��JUnit�yԇ 171

10.1 ����Maven�(xi��ng)Ŀ 171

10.2 ʹ��Maven��� 174

10.2.1 Maven��Compiler��� 175

10.2.2 Maven��Surefire��� 176

10.2.3 ��Maven����HTML��ʽ��JUnit��(b��o)�� 178

10.3 �������� 178

10.4 Maven������(zh��n)�� 183

10.5 �Y(ji��) 183

�� 11�¡���Gradle 6���\(y��n)��JUnit�yԇ 184

11.1 Gradle���� 184

11.2 ��(chu��ng)��Gradle�(xi��ng)Ŀ 186

11.3 ʹ��Gradle��� 190

11.4 ���^�_ʼ��(chu��ng)��Gradle�(xi��ng)Ŀ������JUnit 5�yԇ 190

11.5 ���^Gradle��Maven 194

11.6 �Y(ji��) 195

�� 12�¡�IDE��JUnit 5��֧�� 196

12.1 JUnit 5�cIntelliJ IDEA���� 197

12.2 JUnit 5�cEclipse���� 202

12.3 JUnit 5�cNetBeans���� 206

12.4 JUnit 5�cIntelliJ IDEA��Eclipse��NetBeans���ɵı��^ 211

12.5 �Y(ji��) 211

�� 13�¡�JUnit 5�ij��m(x��)���� 212

13.1 ���m(x��)���ɜyԇ 212

13.2 Jenkins���� 214

13.3 �F(tu��n)�(du��)��(sh��)�`���m(x��)���� 217

13.4 ����Jenkins 222

13.5 ��CI�h(hu��n)����̎���΄�(w��) 225

13.6 �Y(ji��) 230



���IJ��֡�ʹ�ìF(xi��n)����ܺ�JUnit 5





�� 14�¡�JUnit 5�U(ku��)չģ�� 233

14.1 JUnit 5�U(ku��)չģ�ͺ��� 233

14.2 ��(chu��ng)��JUnit 5�U(ku��)չ 234

14.3 ʹ�ÿ��õĔU(ku��)չ�c(di��n)����JUnit 5�yԇ 237

14.3.1 ���˿���Ϣ�־û�����(sh��)��(j��)���� 237

14.3.2 �z��˿͵��� 246

14.4 �Y(ji��) 248

�� 15�¡���ʾ�Ӝyԇ 249

15.1 �x��yԇ��� 250

15.2 HtmlUnit���� 250

15.3 ����HtmlUnit�yԇ 252

15.3.1 HTML���� 252

15.3.2 ���ض���Web�g�[���M(j��n)�Мyԇ 252

15.3.3 ������Web�g�[���M(j��n)�Мyԇ 253

15.3.4 ��(chu��ng)����(d��)���Ĝyԇ 254

15.3.5 �yԇ��� 256

15.3.6 �yԇJavaScript 257

15.4 Selenium���� 261

15.5 ����Selenium�yԇ 262

15.5.1 ���ض���Web�g�[���M(j��n)�Мyԇ 264

15.5.2 ʹ��Web�g�[���yԇ��(d��o)�� 265

15.5.3 �yԇ����Web�g�[�� 266

15.5.4 �ò�ͬ��Web�g�[���yԇGoogle�����͌�(d��o)�� 268

15.5.5 �yԇ�W(w��ng)վ�������(y��n)�C 270

15.6 HtmlUnit�cSelenium���� 275

15.7 �Y(ji��) 275

�� 16�¡�Spring��(y��ng)�ó���yԇ 277

16.1 Spring��ܺ��� 277

16.2 ��هע�뺆�� 278

16.3 ��(g��u)���͜yԇSpring��(y��ng)�ó��� 283

16.3.1 �Ծ��̷�ʽ��(chu��ng)��Spring������ 283

16.3.2 ʹ��Spring TestContext��� 286

16.4 ��JUnit Jupiterʹ��SpringExtension 288

16.5 ���������Բ�ʹ��JUnit 5�yԇ 290

16.6 �Y(ji��) 296

�� 17�¡�Spring Boot��(y��ng)�ó���yԇ 297

17.1 Spring Boot���� 297

17.2 ��Spring Initializr��(chu��ng)���(xi��ng)Ŀ 298

17.3 ��Spring��(y��ng)���w�Ƶ�Spring Boot�� 300

17.4 ��Spring Boot��(sh��)�F(xi��n)�ض��yԇ������ 303

17.5 ��Spring Boot��(y��ng)�������Ӻ͜yԇ������ 305

17.6 �Y(ji��) 309

�� 18�¡�REST API�yԇ 311

18.1 REST��(y��ng)�ó��򺆽� 311

18.2 ��(chu��ng)��RESTful API�����팍(sh��)�w 312

18.3 ��(chu��ng)��RESTful API������ɂ����P(gu��n)��(sh��)�w 319

18.4 �yԇRESTful API 326

18.5 �Y(ji��) 330

�� 19�¡���(sh��)��(j��)�쑪(y��ng)�ó���yԇ 331

19.1 ��(sh��)��(j��)���Ԫ�yԇ�迹��ƥ�� 331

19.1.1 ��Ԫ�yԇ����\(y��n)�Ъ�(d��)���Ĵ��a 332

19.1.2 ��Ԫ�yԇ������ھ������\(y��n)�� 332

19.1.3 ��Ԫ�yԇ��횿����\(y��n)�� 333

19.2 �yԇJDBC��(y��ng)�ó��� 333

19.3 �yԇSpring JDBC��(y��ng)�ó��� 342

19.4 �yԇHibernate��(y��ng)�ó��� 349

19.5 �yԇSpring Hibernate��(y��ng)�ó��� 354

19.6 �yԇ��(sh��)��(j��)�쑪(y��ng)�ó���ķ������^ 360

19.7 �Y(ji��) 361



���岿�֡���JUnit 5�_�l(f��)��(y��ng)�ó���





�� 20�¡���JUnit 5�M(j��n)�Мyԇ�(q��)���_�l(f��) 365

20.1 TDD����Ҫ���� 365

20.2 ������푪(y��ng)�ó��� 366

20.3 ��������푪(y��ng)�ó����w�Ƶ�TDD 371

20.4 �ؘ�(g��u)������푪(y��ng)�ó��� 375

20.5 ʹ��TDD���������� 379

20.5.1 ����һ�N�߼����� 379

20.5.2 ͬһ���˿�ֻ������һ�� 387

20.6 �Y(ji��) 390

�� 21�¡�ʹ��JUnit 5�M(j��n)���О��(q��)���_�l(f��) 391

21.1 ���(q��)���_�l(f��)���� 391

21.1.1 һ�N�����Ե����� 392

21.1.2 ������������(y��n)�՘�(bi��o)��(zh��n) 392

21.1.3 BDD�ă�(y��u)�c(di��n)������(zh��n)�� 393

21.2 ʹ��Cucumber��JUnit 5����BDD�L(f��ng)�� 394

21.2.1 Cucumber���� 395

21.2.2 ��TDD�����w�Ƶ�Cucumber�� 396

21.2.3 ʹ��Cucumber����һ���¹��� 403

21.3 ʹ��JBehave��JUnit 5����BDD�L(f��ng)�� 410

21.3.1 JBehave���� 410

21.3.2 ��TDD�����w�Ƶ�JBehave�� 410

21.3.3 ʹ��JBehave����һ���¹��� 416

21.4 Cucumber�cJbehave�ı��^ 423

21.5 �Y(ji��) 423

�� 22�¡���JUnit 5��(sh��)�F(xi��n)�yԇ���������� 424

22.1 ܛ���yԇ�ČӴ� 424

22.2 ��Ԫ�yԇ�����x�\(y��n)�еĻ����M�� 425

22.3 ���ɜyԇ����Ԫ�M�� 435

22.4 ϵ�y(t��ng)�yԇ������������ ܛ�� 442

22.4.1 ʹ��ģ�M���ⲿ��ه�(xi��ng)�M(j��n)�Мyԇ 443

22.4.2 ʹ�ò��֌�(sh��)�F(xi��n)���ⲿ��ه�(xi��ng)�M(j��n)�Мyԇ 447

22.4.3 ʹ����ȫ��(sh��)�F(xi��n)���ⲿ��ه�(xi��ng)�M(j��n)�Мyԇ 449

22.5 �(y��n)�՜yԇ��ܛ���M��I(y��)��(w��)���� 452

22.6 �Y(ji��) 461

���A�� Maven 462

A.1 �s����(y��u)������ 462

A.2 ��(qi��ng)��ه���� 462

A.3 Maven��(g��u)���������� 463

A.4 ���ڲ�����wϵ�Y(ji��)��(g��u) 465

A.5 Maven���(xi��ng)Ŀ����ģ�� 466

A.6 ���bMaven 467

���B�� Gradle 468

B.1 ���bGradle 468

B.2 ��(chu��ng)��Gradle�΄�(w��) 470

���C�� IDE 473

C.1 ���bIntelliJ IDEA 473

C.2 ���bEclipse 474

C.3 ���bNetBeans 475

���D�� Jenkins 476



չ�_ȫ��

JUnit��(sh��)��(zh��n)(��3��) ���ߺ���

������·�D������Catalin Tudose��������Ӌ(j��)��C(j��)�ƌW(xu��)���I(y��)�IJ�ʿ�W(xu��)λ����(d��n)���^ Java �߼��_�l(f��)�T�ͼ��g(sh��)�F(tu��n)�(du��)���^�����г��^ 15��� Java �_�l(f��)��(j��ng)�(y��n)��

��Ʒ�uՓ(0�l)
���o�uՓ����
�������]
����N
����픲�
�ЈD�W(w��ng)
�ھ��ͷ�