---
title: 今更JUnit4を勉強する
tags:  #junit4 #java #むきむきjava  
author: [shiryu](https://convert.docswell.com/user/shiryu)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/YJ9N8NN4J3.jpg?width=480
description: むきむきJava第二回での資料です
published: October 21, 23
canonical: https://convert.docswell.com/s/shiryu/KVV2VL-2023-10-14-mukimuki_java_junit4
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/YJ9N8NN4J3.jpg)

今更JUnit４を勉強する


# Page. 2

![Page Image](https://bcdn.docswell.com/page/GJ8K8KKVED.jpg)

今日伝えたいこと
勉強したい分野の本が古くても、
とりあえず読んでみた方がよさそう
対象者 : 新しいものをやらなきゃいけない気がする新人エンジニア


# Page. 3

![Page Image](https://bcdn.docswell.com/page/LJLZRZZR7R.jpg)

自己紹介
2023卒エンジニア
Shiryu
-
むきむきJava主催
23歳✌✌👍
大学時代は東北で過ごす
つよくない（非情報系）
@shiryu_go


# Page. 4

![Page Image](https://bcdn.docswell.com/page/47MVRVVP7W.jpg)

経緯
JUnitの勉強したかったけど
出てきた本が全部JUnit4
そもそも、テストの書き方の前に
テストってなんなのか知るのが重要なのでは


# Page. 5

![Page Image](https://bcdn.docswell.com/page/P7R2R22YJ9.jpg)

その前に：JUnit4,5の違い
パッケージ
JUnit4 : org.junit.*
JUnit5 : org.junit.jupiter.*
例 : org.junit.Test→org.junit.jupiter.api.Test
アノテーション
JUnit4 : @Test(expected = Exception.class)
JUnit5 : Assertions.assertThrows(Exception.class, () -&gt; {//...});


# Page. 6

![Page Image](https://bcdn.docswell.com/page/PJXDRDD4EX.jpg)

テストで重要っぽいこと
①FIRST（失敗しないテストの原則）
②Right-BICEP（テストの対象の選び方）
③CORRECT（テストで考慮するべき境界条件）
前提 : 完璧なテストは存在しない


# Page. 7

![Page Image](https://bcdn.docswell.com/page/3JKXRXXPED.jpg)

テストの考え方①
FIRST（失敗しないテストの原則）
- Fast（迅速）
- Isolated（隔離）
- Repeatable（繰り返し可能）
- Self-validating（自律的検証）
- Timely（タイムリー）


# Page. 8

![Page Image](https://bcdn.docswell.com/page/LE358554J5.jpg)

テストの考え方②
Right-BICEP（テストの対象の選び方）
-
Right（結果は正しいか）
Boundary（境界）
Inverse（別の関係をチェック可能か）
Cross-Check（別の方法を使って結果をチェック可能か）
Error（エラーの条件を強制的に発生させられるか）
Performance（特性は許容範囲か）


# Page. 9

![Page Image](https://bcdn.docswell.com/page/8EDDMDD5EG.jpg)

テストの考え方③
CORRECT（テストで考慮するべき境界条件）
-
Conformance（形への適合）
Ordering（順序）
Range（範囲）
Reference（参照）
Existance（存在）
Cardinally（要素数）
Time（時間）


# Page. 10

![Page Image](https://bcdn.docswell.com/page/V7PXRXXDE8.jpg)

JUnitの年表
Javaの年表
1997 : JUnit 1 Release
???? : JUnit2 Release
1997 : JDK 1.1
2002 : J2SE1.4
???? : JUnit3 Release
2006 : JUnit 4 Release
2017 : JUnit5 Release
2004 : Java SE5
2006 : Java SE6
2008 : J2SEサポ終了
2017 : Java9
JDKのVer = JavaのVer


# Page. 11

![Page Image](https://bcdn.docswell.com/page/2JVLRLLG7Q.jpg)

2001年 : アジャイル宣言（アジャイル開発発祥）
2003年 : テスト駆動開発（TDD）
2006年 : ビヘイビア駆動開発（TDD派生）
2009年 : DevOps
→今なんとなく耳にする言葉の発祥は、割と古い


# Page. 12

![Page Image](https://bcdn.docswell.com/page/5EGXMX3DJL.jpg)

まとめ
-
結果
境界条件
関係性
エラー条件が正確か等々を確かめる...etc
Verが低くても必要なことは多分学べる


# Page. 13

![Page Image](https://bcdn.docswell.com/page/4JQ8R85X7P.jpg)

おわり


# Page. 14

![Page Image](https://bcdn.docswell.com/page/K7428292J1.jpg)

参考図書
実践 JUnit
JUnit実践入門


# Page. 15

![Page Image](https://bcdn.docswell.com/page/LJ1M2MKKEG.jpg)

会場内での補足
- できる限り新しい本を読むべき
- 今後、日本語での本は出なくなっていく。
- 英語での本は発売される
- Java8以降であれば現状ギリギリ活かせる
（そもそもJava8がLTSの期限切れそうだけど）


