ã»ãšãã©ã®äººããã®æèŠã«åºãããããšæããŸãããã¹ããæžãã®ã¯é£ããã§ãããã¹ããæžãäŸã¯ãã¹ãŠãæãåçŽãªã±ãŒã¹ã®ããã«äžããããŠããŸãããå®éã«ã¯æ©èœããŸããã ããããæè¿ã§ã¯ããã¹ãã®äœæã¯éåžžã«ç°¡åã§ãäºçްãªããšã§ããããšããå°è±¡ãåããŸããã
æåã®éšåã§å§ããããšãç¶ããŸãã
ãªã¯ãšã¹ãã®ãã¹ããç¶ããŸã
ç§ã¯ããªãã®ããšãç¥ããŸããããè€éãªããŒã¿ããŒã¹ã¯ãšãªãæžãããã«ãSQLã¯ãšãªãŸãã¯HQLã¯ãšãªãåžžã«äžå®ãåŒãèµ·ãããŠãããã©ããã¯é¢ä¿ãããŸããã å Žåã«ãã£ãŠã¯ãéåžžã«æèœãªãªã¯ãšã¹ããäœæããå¿
èŠãªããšã絶察ã«å®è¡ããæ¬çªç°å¢ã§ã³ãŒããå®è¡ãããšããã¹ãŠãããŸãããããã«èŠããŸããããã°ãããããšãäœããå®å
šã«èšç®ããããããªããŒã¿ã®çµã¿åãããããããšãããããŸãééã£ãŠããããŸãã¯äžéšã®ã¬ã³ãŒããæ¬ èœããŠããããŸãã¯ãã®ãããªäœãã ããã¯ãå€ãã®å€éšçµåã䜿çšããå¿
èŠãããã¯ãšãªããäžéšã®ãã£ãŒã«ãã§ããŒã¿ãã°ã«ãŒãåããå¿
èŠãããã¯ãšãªã®å Žåã«ç¹ã«åœãŠã¯ãŸããŸãã äžè¬çã«ããã¡ãããç§ã¯é¡ã£ãŠããŸãã è€éãªã¯ãšãªã ç§ãã¡ã®ãããžã§ã¯ãã§ã¯ãFlexããã°ã©ãã®ç掻ãä¿é²ããããã«ãè€éãªåå²ããŒã¿ãåçŽãªããŒãã«ã®åœ¢åŒã§æäŸãããããªãã®ãããã€ããããŸããã ãã®ãã¹ãŠã®è€éãã«å¯Ÿããç§ãã¡ã®çãã¯ïŒ ãã¡ãããã¹ãã§ãïŒ åæã«ãç§ã¯çãã人éã§ãããããã®ã¿ã€ãã®ç¹°ãè¿ãïŒãŸãã¯ãããã«ç°ãªãïŒã³ãŒãã®æã§20ã®ãã¹ããæžãããšã¯ãŸã£ããé¢çœããªãã§ãã
public void test() { Application app1 = ApplicationMother.makeApplication(); Version version11 = VersionMother.makeVersion(app1); save(app1, version11); DeploymentMother.makeDeployment(app1); DeploymentMother.makeDeployment(app1);
ãã®èŠçãé¿ããããã«ããã¹ããæžãããšãããã°ã©ãã³ã°ã§ããã補åèªäœãæžãããšã»ã©é¢çœããªãããšãæãåºããŸãã ãããŠã2çªç®ã«é©çšãããã¹ãŠã®ã¢ãããŒãã¯ãæåã®ã¢ãããŒãã«ããŸã£ããé©çšã§ããŸãã ç¹ã«ããªãã¡ã¯ã¿ãªã³ã°ã¯ç§ãã¡ã®å人ã§ããããšãæãåºããŠãã ããã ãªã¢ãŒãã§ãç¹°ãè¿ãã³ãŒãã®ããã«èŠãããã®ã¯ãã¹ãŠããã«ããŒã¡ãœãããšãã«ããŒã¯ã©ã¹ã§å®¹èµŠãªãåé€ãããŸãã
public void testDeletedDeploymentsDontCount() { TestData data = app("app 1") .withNonDeletedVersion().deployedTimes(2) .withDeletedVersions(1).deployedTimes(2) .app("app 2") .withNonDeletedVersion().deployedTimes(1); queryAndAssert( data.makeExpectedRow(1, 1, 2), data.makeExpectedRow(1, 2, 0), data.makeExpectedRow(2, 1, 0) );
ãã§ã«è¯ãã§ãããïŒ ã³ãŒãã¯æ¯é¡ã®ãªãã»ã©èªã¿ããããªããŸããã ã¡ãœãããã§ãŒã³ã䜿çšããå ŽåïŒç§ã®æèŠã§ã¯ãããã¯
ExpressionBuilderãã¿ãŒã³ãšåŒã°ããŸãïŒãåžžã«ã¡ãœããã远å ããæ©äŒãããããã®åŒã³åºãã«ãã£ãŠæ§é å
šäœãäœæãããŸããæ¬¡ã«äŸã瀺ããŸãã
TestData data = times(5).deployedAppAndVersion() .times(2).deletedDeployedApp();
ã¯ãããã®ããã«äžå®éã®ãŠãŒãã£ãªãã£ã³ãŒããèšè¿°ããå¿
èŠããããŸãããã第äžã«ãããã¯æ¬åœã«é¢çœãã第äºã«çŸãããã®ã§ããã ã€ãŸããç§ã¯ãããæ¥œããã§ãæ°ããããªãã¯ãåŠã³ãæ©æµãåããŸããããªããªããä»ã§ã¯ãã€ã§ããœãŒã¹ããŒã¿ã®æããªçµã¿åããã®ãã¹ããããã€ã§ã远å ã§ããåãã2åããããŸãããã§ãã èå³ãããå Žåãæéã®ããããã®å
èš³ïŒ
- ãªã¯ãšã¹ãã®æåã®ããªã¢ã³ãã®äœæïŒ20åã
- æåã®2ã€ã®ãã¹ãã®äœæïŒ10åã
- thirdããäžå¿«ãª3çªç®ã®ãã¹ããæžãïŒ10åã
- ãªãã¡ã¯ã¿ãªã³ã°çªå·1ïŒ30åã
- ãã¹ã4ã8ã®èšè¿°ããªãã¡ã¯ã¿ãªã³ã°2ïŒ10ââåã
- figãæ©èœããªãã£ãããããªã¯ãšã¹ããæžãçŽãã倿ãããã¹ãŠã®ãã¹ããæ£åžžã«èµ·åããŸããïŒ20åã
- ãã¹ãã®è¿œå ããã¹ãã®ç°¡åãªãªãã¡ã¯ã¿ãªã³ã°ããªã¯ãšã¹ãã®ä¿®æ£ïŒ10åéã§4åã
ãã¹ãŠã®ãšã©ãŒã®ãã°ã¬ããŒãããã£ãå Žåãã©ããããæéãããããŸããããªã¯ãšã¹ããå床éããã©ã®ããªãŒã¯ããããããã°ã©ã ããã®ããæãåºãããªãããã修埩ããã³ãŒããéä¿¡ããããªã©ãæ³åããã®ãæãã§ãããã®ã¢ãããŒãã¯ãã¯ãšãªãã¹ãã ãã§ãªãé©çšã§ããŸãã ãããã£ãŠã次ã«é²ã¿ãŸãã
ãµãŒãããŒãã£ãµãŒãã¹ãšã®çžäºäœçšã®ãã¹ã
ç§ãã¡ã®å Žåãä»®æ³åã€ã³ãã©ã¹ãã©ã¯ãã£ã¯ãµãŒãããŒãã£ã®ãµãŒãã¹ãšããŠæ©èœããŸãã ä»®æ³ãã·ã³ãéå§ãæ¶æ»
ãç£èŠãããµãŒãã¹ã ããã§ã®å°é£ã¯æµ·ã§ãã 圌女ãèªåã®äžã§äœãããŠããã®ã誰ãå®éã«ã¯ç¥ããªããšããäºå®ããå§ãŸãïŒã圌女ã¯å°ããªããªã³ãæã£ãŠããŸããããã¡ãïŒã圌女ã®APIã¯åäžçŽã®
1ãæã§å®å
šã«äœããããšããäºå®ã§çµãããŸãã圌女ã«ïŒã€ã³ãã©ã¹ãã©ã¯ãã£ïŒãäŒããããã«ïŒããã®ãããª3ã€ã®ä»®æ³ãã·ã³ãèµ·åããå®äºãããããã§ããã¯ããŸãããäœæããã³ãã³ããå®è¡ãããã®åŸåžžã«ã¹ããŒã¿ã¹ãèŠæ±ãããªã©ã åæã«ãåããã°ã©ããŒã¯èªåã®ãã·ã³ã§ãã¹ãŠã®ãã¹ããéåžžã«é »ç¹ã«å®è¡ããããŒã ã¯å°ççã«åæ£ããŠãããããåžžã«å®éã®ã€ã³ãã©ã¹ãã©ã¯ãã£ãæäœããã®ã¯éçŸå®çã§ããããã§ã¯ããã¹ãŠã®ãã¹ããããã€ãã®ã°ã«ãŒãã«åããŸãã éåžžããŠããããçµ±åãåãå
¥ããã¹ãã¯åºå¥ãããŸãã ããããç§ã«ãšã£ãŠã¯ããã¹ãã®çµ±åã°ã«ãŒãã¯å°ããããã«ããã§ãã åã®ã»ã¯ã·ã§ã³ã§èª¬æããã¯ãšãªãã¹ãã¯åäœã§ããããããšãçµ±åã§ããïŒ ãããã£ãŠãã°ã«ãŒãçªå·1ã«ã¯ã©ãããããã§å®è¡ã§ãããã¹ãŠã®ãã¹ããå«ãŸããã°ã«ãŒã2ã«ã¯äŒæ¥ãããã¯ãŒã¯å
ã§å®è¡ããå¿
èŠããããå€éšäŸåé¢ä¿ïŒä»®æ³åã€ã³ãã©ã¹ãã©ã¯ãã£ãªã©ïŒããããã¹ãŠã®ãã¹ããå«ãŸããŸãã ã°ã«ãŒãçªå·3ããããŸãããããã«ã€ããŠã¯åŸã§è³ªåããŸã-å®éã«äœããã¹ãããå¿
èŠããããŸããïŒ ã©ã€ãã©ãªããµãŒãããŒãã£ã®ãµãŒãã¹èªäœã¯ãã¹ãããŠããŸããã®ã§ãã€ã³ãã©ã¹ãã©ã¯ãã£ãç§ãã¡ãäŒããããšãæ£ããå®è¡ãããµããããŸãã ãã®ãããžã§ã¯ãã«ã¯ãHTTP APIãJavaã³ãŒãã§ã©ããããå¥ã®ã¢ãžã¥ãŒã«ããããŸãã ãã®ã¢ãžã¥ãŒã«ã¯ãç¬èªã®ããžãã¯ããã¹ãããåçŽãªãã¹ãã§ãã¹ããããŠããŸãããããã ãã§ã¯ååã§ã¯ãããŸããã ããã«ã2çªç®ã®ã°ã«ãŒãã§ã¯ãäŒæ¥ãããã¯ãŒã¯å
ã§ã®ã¿å®è¡ããã2ã3ã®ãã¹ãã®ã¿ãå®è¡ãããã®ä»®æ³ã³ãã¯ã¿ãåŒãç¶ãæ¥ç¶ãä»®æ³ãã·ã³ã®èµ·åãšçµäºãããã³ã¹ããŒã¿ã¹ã®ååŸãè¡ããããšã確èªããŸãã ã¢ããªã±ãŒã·ã§ã³ã®ããžãã¯ããã¹ãããæ¹ãã¯ããã«è峿·±ãã䟿å©ã§ãã ããã§ã¹ã¿ãã圹ç«ã¡ãŸãã
ãã€ãã®ããã«ããã¡ãŠã©ãŒã¯ç§ãã¡ã®ãã¹ãŠã§ãã
ããã§ãSpringã®ããžãã¯ã䜿çšããŠããã¹ãã³ã³ããã¹ãã§ãä»®æ³ã€ã³ãã©ã¹ãã©ã¯ãã£ãå¿
èŠãªå Žåã¯ãã€ã§ããã®ã¯ã©ã¹ã眮ãæããŸãã ããã«ããã¹ãŠã®ãã¹ãã§ãä»®æ³ãã·ã³ãå®éã«äœæããããã©ãããããã³äœææã®ã¢ããªã±ãŒã·ã§ã³ã®åäœã確èªããŸããã
public void testDeploymentStarted() { Deployment deployment = DeploymentMother.makeNewDeployment(); deploymentManager.startDeployment(deployment); assertDeploymentGoesThroughStatuses(NEW, STARTING, CONFIGURING, RUNNING); }
ããã«è峿·±ããã®ã«ããããã«ã
Chaos Monkeyãã¹ã¿ãã«è¿œå ã§ããŸãã
public class VirtualInfrastructureManagerStubWithChaosMonkey implements VirtualInfrastructureManager { private ChaosMonkey monkey; public VirtualMachineState createVm(VirtualMachineDescription vmDescription) { monkey.rollTheDice(); vms.add(makeVm(vmDescription)); } ... private class ChaosMonkey { public void rollTheDice() { if (iAmEvil()) throw new VirtualInfrastructureException("Ha-ha!"); return; } } }
ç¿ã«ãšã©ãŒã®å¯èœæ§ãå°ããããšãã§ããå Žåãããã€ã®è峿·±ãç¶æ³ãäœãåºãããšãã§ãããæ³åããŠã¿ãŠãã ããã ãŸãã¯ã圌女ã宿çã«ã©ã³ãã ãªæ³åã§ä»®æ³ãã·ã³ããæ®ºãããšãããïŒ
public void testRunningDeploymentRecovers() { Deployment deployment = startDeploymentAndAssertRunning(); ((VirtualInfrastructureManagerStubWithChaosMonkey)virtualInfrastructureManager) .getChaosMonkey().killVms(1); assertDeploymentGoesThroughStatuses(BROKEN, RECOVERING, RUNNING); }
ãããŠãäŒæ¥ã®VPNã«æ¥ç¶ããå¿
èŠããªããåä»®æ³ãã·ã³ãèµ·åããã®ã«5åéåŸ
ã€ããšãªãããã®æ¥œããããã¹ãŠãã·ã³äžã§çŽæ¥ååŸã§ããŸãã
äœè«ïŒç¶ç¶çã€ã³ãã°ã¬ãŒã·ã§ã³
ç°¡åã«èª¬æããŸããããŒã ã«è€æ°ã®äººãããå Žåã¯ãç¶ç¶çãªçµ±åãµãŒããŒãå¿
èŠã§ãã ã³ãŒããªããžããªãšåããããå¿
èŠã§ãã ãããã®ã¹ããŒãã§çŸãããã¹ããå®è¡ããããšã©ãŒãæ€åºãããªãå Žåããããããã¹ãŠèšè¿°ãããã€ã³ãã¯äœã§ããïŒ ãã®ãããžã§ã¯ãã§ã¯ã3ã€ã®ç°ãªãã¢ã»ã³ããªããã»ã¹ããããŸããã 1ã€ç®ã¯ã誰ããgit pushãè¡ããã³ã«èªåçã«éå§ãããæåã®ã°ã«ãŒãã®ãã¹ãã远跡ããŸãã ããŒã ã«ã¯ã«ãŒã«ããããŸãããããã·ã¥ãè¡ã£ãå Žåãæåã®ãã«ããæåãããŸã§ïŒçŽ20åïŒå®¶ã«åž°ããŸããã äžéšã®ãªãã£ã¹ã§ã¯ã豪è¯ãªãŽãããªãã¢ã»ã³ããªãå£ãã人ã®ããŒãã«ã«çœ®ãããäžéšã®ãªãã£ã¹ã§ã¯ããããã¯ããŒãç§ã¯ãã«ããå£ããŸããããšããç¢æã®ç¡æ¬¡å
ã®é»è²ã®Tã·ã£ããççšãã矩åããããŸããããããã¯ç§ãã¡ã«ãšã£ãŠç°¡åã§ããã æåã®ã¢ã»ã³ããªãæåããå Žåã2çªç®ã®ã¢ã»ã³ããªãèµ·åãããå®éã®ã€ã³ãã©ã¹ãã©ã¯ãã£ã§åäœãã2çªç®ã®ã°ã«ãŒããããã¹ããå®è¡ããŸããã ãã®ããã»ã¹ã¯éåžžã«æéãããããŸããïŒæ®å¿µãªããïŒã æ£åžžã«çµäºããå Žåã3çªç®ã®ã¢ã»ã³ããªããªã³ã«ãªããåéãããã³ãŒãããã¹ããµãŒããŒã«ã¢ããããŒããããã¢ããã°ã¬ãŒããæåããããšã確èªããããã«2ã3åã ããã¹ããå®è¡ãããŸããã ãã®æ®µéã§ãããŒã¿ããŒã¹ã®æ§é ã®å€æŽã«é¢ããåé¡ãçºèŠãããŸããã 3ã€ã®ã¢ã»ã³ããªãã¹ãŠã®åŸãåäœããã³ãŒããä¿èšŒããããµãŒããŒããããã¯ã©ã€ã¢ã³ãã«ããã瀺ãããšãã§ããŸããã
ã¢ããªã±ãŒã·ã§ã³å
šäœããã¹ããã
ãã¡ãããããã¯ãã°ãããããšã§ãããå®ããã«ç ãã«ã¯ãåã
ã®ã¢ããªã±ãŒã·ã§ã³ã ãã§ãªããã¢ããªã±ãŒã·ã§ã³ãå®å
šã«åäœããããšã確èªããå¿
èŠããããŸãã ããã«ãåã
ã®ã¢ãžã¥ãŒã«ãšãã®çµã¿åããããã¹ãã§ååã«ã«ããŒãããŠããå Žåãåãäœæ¥ã2åè¡ããªãããã«äœæ¥ã®ãã¹ãŠã®åŽé¢ããã§ãã¯ããå¿
èŠã¯ãããŸããã ããã§ã補åã®æè¡ä»æ§ãå床åç
§ãããšäŸ¿å©ã§ãã ããšãã°ãã¹ããŒãªãŒã®1ã€ïŒãŠãŒã¶ãŒã¹ããŒãªãŒïŒã«ã¯ãããŠãŒã¶ãŒãšããŠãMySQLãå¿
èŠãšããã¢ããªã±ãŒã·ã§ã³ããã¹ã¿ãŒã¹ã¬ãŒãã¬ããªã±ãŒã·ã§ã³ã¢ãŒãã§å®è¡ã§ããããã«ãããããšæžãããŠããŸãã ã¢ããªã±ãŒã·ã§ã³ã®ããŒãããã§ãã¯ãããã¹ãããããŸãããã¹ãŠã®ã±ãŒã¹ã§åä»®æ³ãã·ã³ã«éä¿¡ããæ
å ±ã®æ£ç¢ºæ§ãä¿èšŒãããã¹ãããããŸãã ãã ããä»®æ³ãã·ã³ã§å¿
èŠãªãã¹ãŠã®ãœãããŠã§ã¢ãæ§æããã³ãŒãèªäœã¯ããŸãä»ã®äººãäœæããæ¬¡ã«å¥ã®èšèªã§äœæããŸãã ãã®å Žåãç§ãã¡ã¯äœãããŸããïŒ æããªè©±ã®èª¬æã«åŸã£ãŠãã ããã ãç§ã®ã¢ããªã±ãŒã·ã§ã³ã«ã¯ãã¹ã¿ãŒã¹ã¬ãŒããå¿
èŠã§ãããšæžãããŠããŸã-ãé¡ãããŸãã 2ã€ã®JSPããŒãžã§æ§æãããããªããã£ãWebã¢ããªã±ãŒã·ã§ã³ãäœæããŠããŸãã 1ããŒãžã§ããã¹ã¿ãŒãžã®JDBCConnectionãäœæããç¹å®ã®ãšã³ããªãããŒã¿ããŒã¹ã«æžã蟌ã¿ãŸãã 2çªç®ã®ããŒãžã§ãã¹ã¬ãŒããžã®JDBCConnectionãäœæããèªã¿åããŸãã ãã®ãã¹ãã¢ããªã±ãŒã·ã§ã³ã®äœæã«å¿
èŠãªæéã¯10åã§ãããã¹ãã§ã¯ããã®ã¢ããªã±ãŒã·ã§ã³ã補åã«èªã¿èŸŒã¿ãç®çã®ã¢ãŒãã§å®è¡ããããã«èŠæ±ããHTTPã§æåã®ããŒãžã«ã¢ã¯ã»ã¹ããŠãã2çªç®ã®ããŒãžã«ã¢ã¯ã»ã¹ããŸãã ç®çã®ããã¹ãã2ããŒãžç®ã«è¡šç€ºãããå Žå-ãã¹ãŠãé 調ã§ãã èŠä»¶ã®ãªã¹ãã«åµé çã«ã¢ãããŒãããå Žåããã®ãããªå®å
šãªãã¹ãã¯ã»ãšãã©å¿
èŠãããŸããã ããããä»®æ³ãã·ã³ãå®è¡ããããã«ãä»ã®ããã€ãã®ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®ãµããŒããç·æ¥ã«è¿œå ããããã«åœãããããšããããã倧ããªå©ãã«ãªãããšãæ³åããŠãã ããïŒ
Web UIãã¹ã
ããã¯å®å
šã«å¥ã®ãããã¯ã§ãããéåžžã«è峿·±ããèœãšã穎ããããŸãã 説æããããããžã§ã¯ãã§ã¯è¡ãããªãã£ããããç§ã¯ä»ãããé瀺ãå§ããŸããã ã€ã³ã¿ãŒãã§ã€ã¹ã¯Flexã§äœæããããŽãããªãšå¥ã®ã°ã«ãŒãã«ãã£ãŠåŠçãããŸããã ç§ã¯æè°ããèå³ãããããã§ããããšãããŸããããäœãå€ãããŸããã§ããã ç§èªèº«ã¯1幎ååã«ãŸã£ããç°ãªããããžã§ã¯ãã§Webã€ã³ã¿ãŒãã§ã€ã¹ããã¹ãããŠããŸããããä»ã§ã¯ã¡ã¢ãªããWebãã¹ãã®è¯ãäŸãæäŸããã®ã¯é£ããã§ãããã ç§ã¯ãã»ã¬ããŠã ãããªãã®éåžžã«å€§ããªå人ã§ãããšããèšããŸããã çŸåšã®ãããžã§ã¯ããã©ã®ããã«å®å
šã«ãã¹ãããã®ã§ããããïŒ ç¹ã«ãã®ããã«ãäžé£ã®REST WebãµãŒãã¹ãäœæããå¿
èŠãããããã¹ãŠã®ãã¹ãã§ããããåŒã³åºããŸããã ç§ãã¡ã®æå€§ã®åå©ã¯ãFlexã€ã³ã¿ãŒãã§ã€ã¹ã«ãããã®ãµãŒãã¹ãžã®ã¢ã¯ã»ã¹ã匷å¶ããããšã ãšæããŸãããããã£ãŠã補åãæ©èœããŠãããšç¢ºä¿¡ããŠãããæ©èœããŠããªãå Žåã¯ã€ã³ã¿ãŒãã§ã€ã¹ã®åé¡ã§ããã ã¡ãªã¿ã«ãã€ã³ã¿ãŒãã§ã€ã¹ã¯åžžã«æ©èœãé
ããŠãããããWebãµãŒãã¹ã«ã¢ã¯ã»ã¹ããã³ãã³ãã©ã€ã³çšã®ã¯ã©ã€ã¢ã³ããäœæããŸããããã®ã¯ã©ã€ã¢ã³ãã¯æœåšçãªã¯ã©ã€ã¢ã³ãã«éåžžã«äººæ°ããããåœå±ã¯ãã€ãŠWebã€ã³ã¿ãŒãã§ã€ã¹ãå®å
šã«ã¹ããŒããŸããã ããããããã¯ãŸã£ããç°ãªã話ã§ãã
ãããã«
ãã¹ãã«é¢ããæç§æžãæžãããããã¹ãŠã®ãã¹ããªãã·ã§ã³ã説æãããããã¿ã¹ã¯ãèªåã§èšå®ããŸããã§ããã ãã¹ãã®äœæãå¿
èŠã§ããããšã蚌æããããã«ãããäºåºŠãšè©Šã¿ãŸããã§ããã ãã¹ããæžãããšã¯ãŸã£ããé£ãããªããæ¥œããããšããããšããããšã瀺ãããã£ãã ãã§ãïŒå©ç¹ã¯èšããŸã§ããªãïŒã
- ãã¹ãã¯ã話ããå¿
èŠãããããã¹ãèªäœã¯å¯èœãªéãåå§çã§ãªããã°ãªããŸããã ããªãã¯åœŒã«äœåºŠãæ»ã£ãŠæ¥ãŠã圌ããã§ãã¯ãã¹ãããšãããäžåºŠçè§£ããããšããã§ãããã ãã ã³ãŒããèªãã®ã«å¿
èŠä»¥äžã«æéããããã¹ãã§ã¯ãããŸãã
- ããŒã ã®æé«ã®ããã°ã©ããŒã¯ãè€éãªãã®ããã¹ãããããã®äŸ¿å©ãªã€ã³ãã©ã¹ãã©ã¯ãã£ãäœæããã³æ¹åããå¿
èŠããããŸãã ããšãã°ãassertDeploymentGoesThroughStatusesïŒDeploymentStatus ... allowedStatusesïŒã¡ãœããã¯ãŸã£ããåçŽã§ã¯ãããŸããã 宿é¡ã¯ãã¢ããªã±ãŒã·ã§ã³ããã«ãã¹ã¬ããã§ãããåã¹ããããåå¥ã®ã¹ã¬ããã§å®è¡ãããç¡æéã«æéããããããšãåæã«ãæ¬äŒŒã³ãŒãã§ãã®ãããªã¡ãœãããèšè¿°ããããšã§ã:)
- ãã¹ãããå¿
èŠããããã®ã ãããã¹ãããŸãã ã²ãã¿ãŒãšã»ãã¿ãŒããã§ãã¯ãã20ã®ãã¹ããäœæããã«ã¯ãæãé¢ãå¿
èŠããããŸã
- ã³ã¡ã³ãã®ã©ããã§ããã¹ãã®æ§é ãæ€èšããäžè¬çã«èšç»ããå¿
èŠããããšããæèŠã«åºäŒããŸããã ç§ã¯æåºãšããŠå察ããŸãã ãã¹ããæžãéã®éå£ã¯æå°éã«æããå¿
èŠããããŸãã ãã¹ããæžãå§ããã ãã§ãã ææ¥ãæ§é ã倿Žããå¿
èŠãããå Žåã¯ã倿ŽããŠãã ããã ãªãã¡ã¯ã¿ãªã³ã°ã¯ãä»ã®ãã¹ãŠã®ãã®ãšåæ§ã«ãã¹ãã«ãé©çšã§ããŸãã
- 2åçºçãããã¹ãã®äžéš-å¥ã®ã¡ãœããïŒTestUtilsãªã©ïŒã«èªç±ã«å
¥ããŠãã ããã ããã«ãããã¹ã¿ãããæ¬¡ã®ãã¹ããæžãéã®éå£ãããã«äœããªããŸãã
- äžè¬çããããšæããããã¹ãïŒããšãã°ãTestUtilsã®assertEqualsïŒ2ãdeployments.sizeïŒïŒïŒïŒassertSizeïŒexpectedSizeãcollectionïŒïŒãåãåºããŠãã ããã
- ã³ãŒãã®äžéšããã¹ãããã®ãé£ããå Žåã¯ãããããäžå®å
šã«èšè¿°ãããŠããŸãã ååãšããŠãæåã«ãã¹ããäœæããŠããããã®ãã¹ãããã¹ãããã³ãŒããäœæããå¿
èŠããããŸãã ããã詊ããŠãããªãã¯ããã奜ãã«ãªãã§ãããã
- ãããŠæãéèŠãªããšã¯ããã¹ããæžãããšã¯éå±ãªçŸ©åã§ã¯ãªããéå±ãªã«ãŒãã³ã§ã¯ãªããæ¬åœã«è峿·±ãåé¡ã«ã€ããŠèããããšãã§ããã³ãŒããæžãããã®æ£ããã¢ãããŒãã§ãã