
ã¯ã˜ã‚ã«
皆ã•ã‚“ï¼åˆã‚ã¾ã—ã¦ï¼ã€€æ¥½æ¥½è«‹æ±‚æ–°å’エンジニア㮠kaihatsuda ã§ã™ã€‚
本記事ã§ã¯ã€Kotlin ã®ãƒ†ã‚¹ãƒˆãƒ•レームワーク Kotest ã«ä½¿ã‚れã¦ã„ã‚‹ Kotlin ã®ç‰¹å¾´çš„ãªè¨˜æ³•や技術をç´è§£ã„ã¦ã„ãã¾ã™ï¼ã€€(本記事㯠Kotest ã® ä½¿ã„æ–¹è§£èª¬ ã§ã¯ãªãã€ãã®èƒŒå¾Œã«ã‚ã‚‹ Kotlin ã®æŠ€è¡“ã‚’ç†è§£ã™ã‚‹ã“ã¨ã«ç„¦ç‚¹ã‚’当ã¦ã¦ã„ã¾ã™ã®ã§ã€ã”了承ãã ã•ã„。)
ç§ãŸã¡ãŒé–‹ç™ºã™ã‚‹ 楽楽請求 ã§ã¯ã€ã‚µãƒ¼ãƒãƒ¼ã‚µã‚¤ãƒ‰ã®å®Ÿè£…ã« Kotlin を採用ã—ã¦ã„ã¾ã™ã€‚テストコードã®è¨˜è¿°ã‚‚é–‹ç™ºã‚µã‚¤ã‚¯ãƒ«ã«æ¬ ã‹ã›ãªã„é‡è¦ãªå·¥ç¨‹ã®ä¸€éƒ¨ã¨ã—ã¦ä½ç½®ã¥ã‘られã¦ãŠã‚Šã€å“質を担ä¿ã™ã‚‹ãŸã‚ã®å¿…é ˆè¦ç´ ã«ãªã£ã¦ã„ã¾ã™ã€‚特ã«ã€ãƒ†ã‚¹ãƒˆã‚³ãƒ¼ãƒ‰ã® 簡潔㕠や å¯èªæ€§ã®é«˜ã• ã¯ã€åŠ¹çŽ‡çš„ãªé–‹ç™ºã«ãŠã„ã¦éžå¸¸ã«é‡è¦ã§ã™ã€‚
楽楽請求ã§ã¯ã€å˜ä½“テストを記述ã™ã‚‹ãŸã‚ã« Kotest を採用ã—ã¦ã„ã¾ã™ã€‚ç§è‡ªèº«ã€å¦ç”Ÿæ™‚代ã«å˜ä½“テストを書ã経験ãŒã»ã¨ã‚“ã©ãªãä¸å®‰ã§ã—ãŸãŒã€é…属後ã«åˆã‚ã¦è§¦ã‚ŒãŸ Kotest ã§ä»¥ä¸‹ã®ã‚ˆã†ãªãƒ†ã‚¹ãƒˆã‚³ãƒ¼ãƒ‰ã«è§¦ã‚ŒãŸã¨ãã€ãã®ç›´æ„Ÿçš„ãªæ›¸ãæ–¹ã«æ„Ÿå‹•ã—ã¾ã—ãŸã€‚
åˆã‚ã¦è§¦ã‚ŒãŸ Kotest ã®ã‚³ãƒ¼ãƒ‰ã®ã‚¤ãƒ¡ãƒ¼ã‚¸
class MySpec : FunSpec({
context("å››å‰‡æ¼”ç®—ã®æ£å¸¸ç³»") {
test("æ£ã—ãåŠ ç®—ã§ãã‚‹") {
(2 + 2) shouldBe 4
}
test("æ£ã—ãæ¸›ç®—ã§ãã‚‹") {
(9 - 2) shouldBe 7
}
}
context("四則演算ã®ç•°å¸¸ç³»") {
test("0ã§é™¤ç®—ã™ã‚‹ã¨ç®—è¡“ã‚¨ãƒ©ãƒ¼ãŒæŠ•ã’られる") {
shouldThrow<ArithmeticException> {
val result = 1 / 0
}
}
}
})
ã“ã®ã‚³ãƒ¼ãƒ‰ã‚’見ãŸã¨ãã€ç§ã¯ã“ã†æ€ã„ã¾ã—ãŸã€‚
「ãªã‚“ã ã“ã® shouldBe ã¨ã‹ context ã¨ã‹ã„ã†æ›¸ãæ–¹...
ã§ã‚‚ã€ã‚ã¡ã‚ƒãã¡ã‚ƒå¯èªæ€§ãŒé«˜ã„ã—ç›´æ„Ÿçš„ã«æ›¸ã‘ã¦ã™ã”ã„ï¼ã€
一見ã™ã‚‹ã¨ã€ã¾ã‚‹ã§æ™®é€šã®æ—¥æœ¬èªžã® ç®‡æ¡æ›¸ã ã®ã‚ˆã†ã«è¦‹ãˆã¾ã›ã‚“ã‹ï¼Ÿ
context("å››å‰‡æ¼”ç®—ã®æ£å¸¸ç³»")
ã®ä¸ã«ã€test("æ£ã—ãåŠ ç®—ã§ãã‚‹")
ãŒã‚ã‚‹
(2 + 2) shouldBe 4
ã¯ã€Œ2+2ã¯4ã§ã‚ã‚‹ã¹ãã€ã¨ã„ã†æ„味ã®ãƒ†ã‚¹ãƒˆã§ã‚ã‚‹
- æ£å¸¸ç³»ã¨ç•°å¸¸ç³»ã‚’文脈ã§åˆ†ã‘ã¦è¨˜è¿°ã—ã¦ã„ã‚‹
Kotlin を知らãªãã¦ã‚‚ã€ä½•をテストã—ã¦ã„ã‚‹ã®ã‹ç›´æ„Ÿçš„ã«ç†è§£ã§ããã†ã§ã™ã€‚
ã§ã‚‚ç–‘å•ã‚‚æµ®ã‹ã³ã¾ã™
- 「
shouldBe
ã¯ã¾ã‚‹ã§æ¼”ç®—åã¿ãŸã„ã«ã‚¹ãƒšãƒ¼ã‚¹åŒºåˆ‡ã‚Šã§å‘¼ã¹ã‚‹ã®ã¯ä½•故?ã€
- 「ãªã‚“ã§æ³¢æ‹¬å¼§
{}
ã®ä¸ã« context
㨠test
ãŒä¸¦ã‚“ã§ã‚‹ã®ï¼Ÿã€€ãªãœå‘¼ã³å‡ºã›ã‚‹ã®ï¼Ÿã€
- 「
shouldThrow<ArithmeticException>
ã¯ã©ã†ã‚„ã£ã¦åž‹ã‚’ãƒã‚§ãƒƒã‚¯ã—ã¦ã„ã‚‹ã®ï¼Ÿã€
ã“ã†ã—㟠Kotest ã® "锿³•ã®ã‚ˆã†ãªè¨˜æ³•" を支ãˆã¦ã„ã‚‹ã®ã¯ã€Kotlin ã® infix
ã€æ‹¡å¼µé–¢æ•°ã€ãƒ¬ã‚·ãƒ¼ãƒä»˜ãラムダå¼ã€inline & reified
ã¨ã„ã£ãŸç‰¹å¾´çš„ãªæ©Ÿèƒ½ã§ã™ã€‚(ãã®ä»–ã«ã‚‚æ§˜ã€…ãªæŠ€è¡“ãŒä½¿ã‚れã¦ã„ã¾ã™ãŒã€ä»Šå›žã¯ã“ã“ã¾ã§ã«ç•™ã‚ã¾ã™)
- ã¯ã˜ã‚ã«
- 本記事ã®ã‚´ãƒ¼ãƒ«
- 本記事ã§èªã¿è§£ãコード例
- ãれãžã‚Œã®è¨˜æ³•ã®è§£èª¬
- 1. infix
- 2. 拡張関数
- 3. レシーãƒãƒ¼ä»˜ãラムダå¼
- 4. inline & reified
- ã¾ã¨ã‚
ç¶šãã‚’èªã‚€