ç¶ã»ããããPower Assertã«ã¤ãã¦ã²ã¨ãã¨è¨ã£ã¦ããã
3å¹´åã«ãããªè¨äºãããã¾ããã
3è¡ã§ã¾ã¨ããã¨ã
- Power Assertã¯ã¦ããããã¹ãã®ããã«ã»ããã£ããã®ã§ã¯ãªã
- 欲ããã®ã¯çµæã®å·®å
- 誰ãä½ã£ã¦ï¼
ã¨ããã¨ã³ããªã§ããã ãããã id:pocketberserker ãä½ã£ã¦ããã¾ããï¼
PowerAssertããå¼·ãããªååã§ããæãã§ãã
Power Assertã¯æä»£é ããä»ã¯Muscle Assertã ï¼çãªè©±ããªï¼
— 裸ã®WPF/MVVMãæ¸ãç·(ãã³) (@gab_km) 2016å¹´6æ1æ¥
MuscleAssertã®ä½¿ãæ¹
ãã®ã©ã¤ãã©ãªã¯ãPersimmonã¨ããF#ç¨ã®ãã¹ãã£ã³ã°ãã¬ã¼ã ã¯ã¼ã¯ãæ¡å¼µããã©ã¤ãã©ãªã¨ãã¦ä½ããã¦ãã¾ãã ãã ããã£ããæ¦è¦ãã¤ããã ãã§ããã°ã©ã¡ããç¥ããªãã¦ãåé¡ããã¾ããã ãã®ã©ã¤ãã©ãªã§ã§ãããã¨ã¯ã»ã¼1ã¤ã ãã§ãã
open Persimmon open Persimmon.Syntax.UseTestNameByReflection open Persimmon.MuscleAssert let add x y = x + y let ``add 2 3ã5ãè¿ã`` () = test { do! add 2 3 === 5 }
以ä¸ãç°¡åã ãããå®è¡ãã¦ãæåãã¦ãã¾ã£ã¦é¢ç½ã¿ããªãã®ã§ãããã¨ééã£ã¦ã¿ã¾ãããã
open Persimmon open Persimmon.Syntax.UseTestNameByReflection open Persimmon.MuscleAssert let add x y = x + x // ãã¹ï¼ let ``add 2 3ã5ãè¿ã`` () = test { do! add 2 3 === 5 }
ãããPersimmon.Consoleã§å®è¡ããã¨ã
Assertion Violated: add 2 3ã5ãè¿ã 1. . left 4 right 5
ãããªã¨ã©ã¼ãåºã¦ãã¾ããã æ®éã§ããã
ã§ã¯ãä¾ãã°ãããªJSONããã£ãã¨ãã¾ãããã
{"widget": { "debug": "on", "window": { "title": "Sample Konfabulator Widget", "name": "main_window", "width": 500, "height": 500 }, "image": { "src": "Images/Sun.png", "name": "sun1", "hOffset": 250, "vOffset": 250, "alignment": "center" }, "text": { "data": "Click Here", "size": 36, "style": "bold", "name": "text1", "hOffset": 250, "vOffset": 100, "alignment": "center", "onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;" } }}
ãããèªã¿è¾¼ã颿°ãå®ç¾©ããã¨ãã¦ããã®é¢æ°ããã¹ããããã§ãããã
let expected = let ``JSONãèªã¿è¾¼ãã`` () = test { do! read json === expected }
read
颿°ã®å®è£
ã«ãã¹ããããtext
ã® vOffset
ã« hOffset
ã®å¤ã使ã£ã¦ãã¾ã£ãã¨ãã¾ãããã
ãã®ãã¹ããå®è¡ããã¨ãä¸è¨ã®ãããªã¨ã©ã¼ã¡ãã»ã¼ã¸ã表示ããã¾ãã
Assertion Violated: JSONãèªã¿è¾¼ãã 1. .text.vOffset left 250 right 100
text
ã® vOffset
ã®å¤ã左㯠250
ã ã£ããã©ãå³ã¯ 100
ã ã£ããã¨ãããã¨ãä¸ç®çç¶ã§ãã
MuscleAssert VS PowerAssert
MuscleAssertã¨PowerAssertã®ç®çã¯ã¯ã£ããã¨åããã¦ãã¾ãã MuscleAssertãæåãããã¹ãã£ã³ã°ãã¬ã¼ã ã¯ã¼ã¯ã®ã¢ãµã¼ã·ã§ã³ãæ¸ãããã«ç¹åãã¦ããã®ã«å¯¾ãã¦ãPowerAssertã¯(ãã¹ãã§ã¯ãªã)表æã«ä½¿ããã¨ãåæã«ãã¶ã¤ã³ããã¦ãã¾ãã
è¡¨æææ®µ
è¡¨æææ®µã¨ãã¦ã®PowerAssertã¯ã¨ã¦ã便å©ã§ãã
è¨èªå
èµã® assert
ã¯ãæ¡ä»¶å¼ã false
ã®å ´åã«ä½ããã¡ãã»ã¼ã¸ãåºãã¾ããããã©ãã§è¡¨æã false
ã¨è©ä¾¡ãããããããã®æ
å ±ããæã£ã¦ãã¾ããã
ã¡ãã»ã¼ã¸ãã«ã¹ã¿ãã¤ãºãããã¨ã¯ã§ãã¾ãããæååã§æå®ããå¿
è¦ããããããã©ããªã£ããããåãè¾¼ãã®ã¯å¤§å¤ã§ãã
PowerAssertã¯ãè¨èªå
èµã® assert
ããã®ã¾ã¾ã«è¡¨ç¤ºãããã¡ãã»ã¼ã¸ããªããã«ãã¦ããã¾ãã
表æã¨ãã¦åãè¾¼ãã å¼ã®ãé¨åå¼ã®å¤ããã¡ãã»ã¼ã¸ã¨ãã¦è¡¨ç¤ºãããããããã©ã®å¼ã®è©ä¾¡å¤ãæ³å®ã¨éãã®ããã調ã¹ãããã®æ
å ±ãã³ã¼ãã£ã³ã°ã®ã³ã¹ããæããã«å¾ãããããã«ãªãã®ã§ãã
対ãã¦MuscleAssertã¯ãããããPersimmon.MuscleAssertã¯Persimmonç¨ã®ã©ã¤ãã©ãªã¨ãã¦ä½ããã¦ãããããPersimmonã«ä¾åãã¦ããåä½ã§ä½¿ãããã®ã§ã¯ããã¾ããã 表æã«ä½¿ããã¨ãã¦ããMuscleAssertã¯å¼å ¨ä½ã®è©ä¾¡çµæã®å·®åãåºããããã»ããæ å ±ã§ãããã©ã®å¼ã®è©ä¾¡å¤ãæ³å®ã¨éãã®ããã調ã¹ãããã®æ å ±ã¯ããã«ä¹ã£ã¦ããªãã§ãããã
è¡¨æææ®µã¨ãã¦ã¯ãPowerAssertã®å§åã§ãã
ã¦ããããã¹ãç¨ã¢ãµã¼ã·ã§ã³
ããããMuscleAssertãããããã£ãã®ã¯è¡¨æã§ã¯ããã¾ããã ã¦ããããã¹ãã®ã¢ãµã¼ã·ã§ã³ã¨ãã¦ä½¿ãããã£ãã®ã§ãã
MuscleAssertãä¾ãã°JSONã®ãããªãã¹ãããæ§é ã«å¯¾ãããã¹ãã«å¼·ããã ãã¨ããã®ã¯å ã»ã©ç´¹ä»ããä¾ã§åããã¨æãã¾ãã XMLãJSONãYAMLã¯å½ç¶ã¨ãã¦ãããããã¯ã©ã¹èªä½ãä½ããå é¨ã«æã£ã¦ãããã¹ãæ§é ããã¦ããããããã¹ãããæ§é ããã®ã¾ã¾æ¯è¼ãã¦ãããããããã¡ãã»ã¼ã¸ãåºåãããMuscleAssertã¯ä¾¿å©ã§ãã
対ãã¦PowerAssertã¯ãã®ä¾ã«ã¯è²§å¼±ã§ãã
let ``JSONãèªã¿è¾¼ãã`` () = test { do! read json === expected }
ãã®ãã¹ãã失æããã¨ãã¦ãPowerAssertã§è¡¨ç¤ºãããã®ã¯
json
夿°ã®ä¸èº«read json
ã®çµæexpected
ã®ä¸èº«read json === expected
ãfalse
ã«ãªã£ãã¨ãããã¨
ã§ãããã ã©ããããããã¨å¤§éã®åºåãããããã«ãæ¬å½ã«æ¬²ãããã©ããã©ãéãã®ãï¼ãã¨ããæ å ±ã¯ããããå¾ãã®ã¯å®¹æã§ã¯ããã¾ããã diffãã¼ã«ã使ã£ã¦å¤é¨ã§diffã¨ãã¨ããããã¨ãã人ãå¤ãããããªãã§ããããï¼
ããããããã¹ãã§ actual
å´ã«é¨åå¼ãåºã¦ããããã»ã©ä½ããæ¸ããã¨ã£ã¦å¤ãã®ãï¼ã¨ããã®ãçåã§ãã
ãã®ãã¹ãã®ããã«ãå¤ãã®ãã¹ãã§ã¯æå¾
å¤ã¨ã®ä¸ç¹æ¯è¼ãã§ããã°ããã®ã§ã¯ãªãã§ããããï¼
ã¡ãªã¿ã«ãMuscleAssertã§ã¯ä¸åº¦ã«è¤æ°ã®ç®æã®ééããåºãã¦ããã¾ãã®ã§ãå°ãããã¹ããã¾ã¨ããã®ã容æã§ãã
1. .image.hOffset left 500 right 250 .image.vOffset left 500 right 250 .text.vOffset left 250 right 100 .text.alignment left centre right center @@ -1,6 +1,6 @@ cent -re +er
MuscleAssertã®å¼±ç¹
MuscleAssertã®å¼±ç¹ã¯ãä¸ç¹æ¯è¼ããã§ããªãã¨ããã§ãã ãã®ãããæµ®åå°æ°ç¹æ°ãå«ããã¼ã¿æ§é ããæµ®åå°æ°ç¹æ°ã®ä¸è´ç¯å²ãæå®ãã¦æ¯è¼ãã¨ãããã¨ã¯ç¾ç¶ã§ã¯ã§ãã¾ããã ã¾ãã大尿¯è¼ãªã©ããµãã¼ããã¦ãã¾ããã
ç¾ç¶ã§ãããããã¹ããããå ´åã¯ãMuscleAssertã使ããã«ãã¹ãããããããã¾ããã ä»ã®ã¨ãããããã§å°ã£ããã¨ã¯ããã¾ãã(ãããããã¹ããå¿ è¦ãªãã¡ã¤ã³ã§ä»äºããã¦ããªã)ã
ã¾ã¨ã
ã¾ã¨ãã3è¡ã§ã
- MuscleAssert便å©
- ãã¹ãã®ããã®ã¢ãµã¼ã·ã§ã³ã©ã¤ãã©ãªã¨ãã¦ã¯PowerAssertããã便å©
- å¼±ç¹ã¯ãããã§ãèªåãå°ã£ã¦ããªãããæ¾ç½®
ã¿ãªãããèªåã使ã£ã¦ããè¨èªã§MuscleAssertãå®è£ ãã¦ã¿ã¦ã¯ãããã§ãããï¼ä¾¿å©ã§ããã