ããã«ã¡ã¯ãHabrïŒ
仿¥ã®èšäºã®ãããã¯ã¯ãWebã¢ããªã±ãŒã·ã§ã³ã®æ©èœãã¹ãã®èªååã§ãã ããæ£ç¢ºã«ã¯ããã¹ããã®ãã®ãšããŠã®èªååãã®ãã®ã§ã¯ãªããããã®ã¯ã€ãã¯ã¹ã¿ãŒãããã¡ãããšããµã€ãã£ã³ã°ãªåãçµã¿ã§ãã
æ©èœãã¹ããšååž°ãã¹ãã«é¢äžããå€ãã®ãã¹ã¿ãŒã¯ãé
ããæ©ãããããã»ã¹ãèªååãããšããã¢ã€ãã¢ãæãã€ããŸãã åããªã°ã¬ãã·ã§ã³ã±ãŒã¹ã®å®è¡ãæéã®çµéãšãšãã«ã²ã©ãè¿·æã«ãªãããšã¯ééããããŸããã
ãã®èšäºã¯ããã®ã¢ã€ãã¢ã«è¿ã¥ããèªååã®æ
ãã©ãããå§ãã
ã¹ãããç¥ããªã人åãã«èšèšãããŠããŸãã
ãã®ãã¹ã®æåã«èªåã®ããšãèŠããŠãããšã次ã®åæããŒã¿ãåŸãããŸãïŒç§ã¯äžäººã§ã¯ãªãã«éããããŸããïŒïŒ
- èªååããããšããèŠæããããèªååã§ãããããžã§ã¯ãããããŸãã
- èªååãã»ã¬ã³ããã¬ãŒã ã¯ãŒã¯ã®æ§ç¯ãªã©ã«é¢ããæ
å ±ãå«ãããã©ãŠã¶ã§éãããŠãã50以äžã®ã¿ãã
- è¡ãæ¢ãŸããšééã£ãã¢ãããŒãã®èªèã®çµæãšããŠæ¢ã«æŸæ£ãããŠããVisual Studioãããžã§ã¯ããããã€ãéå§ããŸããã
- èªååã®ããã«ç®¡çè
ã«ãã£ãŠå
¬åŒã«å²ãåœãŠãããæéäžè¶³ çµéšããªããäœã倿ãããïŒãããŠãããã倿ãããã©ããïŒäžæã§ãã
ãªãŒããŒã·ããã¯å¥ã®åé¡ã§ãã
ããªãã¯ãããåãåã£ãŠãèªååãããïŒããšèšãããšã¯ã§ããŸããããããŠæçµçã«ã¯æ¿èªãšã¿ã¹ã¯ãå®äºããæéãåŸãããšãã§ããŸãã çµå¶é£ã¯çµæãå¿
èŠãšããããããäœãããããªããããšããæéãå²ãåœãŠãªãããšãéåžžã«åççã§ãã
ãããã2ã€ã®ç¶æ³ãç¶ããŸãã
ç¶æ³1ã
- ã¹ããã1.ãã¹ã¿ãŒã¯èªååã®ã¢ã€ãã¢ã衚æããããããæè¡ä»æ§ãäœæããäººä»¶è²»ãšæè³ååã®è©äŸ¡ãè¡ããŸããã
- ã¹ããã2.管çè
ã¯æ¬¡ã®ããã«è¿°ã¹ãŸããããOKãçžæ£ãå§ããŸãããã åŠæã®çµãããŸã§ã«ãå®äºããäœæ¥ã«é¢ããã¬ããŒããæåºããå¿
èŠããããŸãã
次ã«ãéçºãå§ãŸãã詊è¡é¯èª€ãæ°ããç¥èããã¹ã¿ãŒã¯éçã«åãã£ãŠåæ©ä»ããããŸãã ããããããã«æéãæ¥ãŸããå¯èœæ§ã®90ïŒ
ã¯éçºã®é£ããïŒç§ãã¡ã¯åå¿è
ã§ãïŒã§ãããã®ãããæéãéãããããToRã§èæ
®ãããªãã£ãæ°ããã¢ã€ãã¢ããããŸããããæ¬åœã«ãããå®è£
ãããã£ãã®ã§ãã ãã®çµæãã·ã¹ãã ãäºå®ã©ããã«é
ä¿¡ããããçµå¶é£ãåæºããå¯èœæ§ãé«ããªããŸãïŒå€ãã®ããšãéæããããšãå€ãã®ããšãåŠãã ããšãããæèœã«ãªã£ãããšã¯é¢ä¿ãããŸããïŒãçµæã¯ãããŸããã
äºçŽããŸãã ããããã芪æãªãèªè
ã圌ã¯ãã®éãæ©ãããã¹ãŠãããŸããããŸããããç§ã¯ãã®ãããªäººã
ã®å°æ°ããããšç¢ºä¿¡ããŠããŸããç¶æ³2ã
- ã¹ããã1.ãã¹ã¿ãŒã¯ç©ºãæéã«
éãã«ãããã¯ãå匷ããèšäºãèªã¿ãå°ãèªååããŸããã - ã¹ããã2.æéãçµã¡ããã¹ãæ
åœè
ã¯ãã§ã«å€ããå°ãªããèªååãããžã§ã¯ããæ°åã®èªåãã¹ãã宿œããŠããŸãã ã¯ãããããžã§ã¯ãã¯ãŸã å®äºããŠããŸããããä»åºŠã¯çµå¶é£ã«ã€ãã·ã¢ãããšãã®æåãéç¥ããŸããããã«ãããäŸ¡æ Œãäžæãããããªãåæ©ä»ããåŸãããŸãã
- ã¹ããã3.ãã¹ãæ
åœè
ã¯çµå¶é£ã«éç¥ããå®äºãããããžã§ã¯ãã§ã¯ãªããã®ã®ãçµæããããžã§ã¯ããå®äºããããã®æ¿èªãšæéãåãåããããäœæ¥è
ã«è¡šç€ºããŸãã
ç§ã®æèŠã§ã¯ããã¹2ãããã§å¥œãŸããã§ãïŒããããç§èªèº«ããã®ãã¹ãåã£ãã®ã§ãã®ããã«æãããŸãïŒãããã¯ããªããæåããªãå Žåã誰ããããç¥ããªãã®ã§ãåŠå®çãªçµæã®æ¬ åŠãä¿èšŒããããã§ã
ãã®èšäºãæçš¿ããããšã§ãããã€ãã®ç®æšããããŸãã
- èªååãšã³ãžãã¢ã§ããåå¿è
ãã¹ã¿ãŒã«ââå©çããããããŸããæåã®èªåãã¹ãããã°ããäœæããèªååãç¶ããŸãã
- ãšããŠãããžã§ã¯ãã®æ¹å€ãååŸããŸã ãŸã 飲ãŸããŠæºããããŠããŸãã
- ã·ã¹ãã ã䜿çšãã人ãèŠã€ããããã§ãªã人ã«ã¯ã©ã®æ©èœã欲ãããã«ã€ããŠã®ãã£ãŒãããã¯ãåãåããŸãã
ãã®èšäºãåå¿è
ã®èªååæ©èœã«åœ¹ç«ã€ããšãé¡ã£ãŠããŸãã
ãŸããæ¹å€ãæåŸ
ããŸãã æ·»ä»ã®ãããžã§ã¯ãã¯çŸåšéçºäžã§ãããè£è¶³ããå¿
èŠããããŸãã
䜿çšããããã®ïŒ
- éçºèšèªãšç°å¢ïŒMS Visual Studio 2012ã®CïŒïŒã¯ã©ã¹ã©ã€ãã©ãªãããžã§ã¯ãïŒã
- ãã©ãŠã¶ãŒç®¡çïŒSelenium Webdriverã
- ãã¹ããã¬ãŒã ã¯ãŒã¯ïŒNUnitã
- ããŒã¿ããŒã¹ãæäœããã«ã¯ïŒã©ãããããã¹ãããŒã¿ãååŸããå¿
èŠããããŸããïŒïŒãã®æ®µéã§ã¯ãæšæºã®
OracleClient
ãšSqlClient
ãŸãã
ã¢ããªã±ãŒã·ã§ã³ã®ã€ã³ã¹ããŒã«ãšãããžã§ã¯ãã®ã»ããã¢ããåäœããã«ã¯ã次ã®ãã®ãå¿
èŠã§ãã
ãªããžããªãããããžã§ã¯ããããŠã³ããŒãããã«ã¯ããã©ã«ããŒïŒæ ŒçŽããå ŽæïŒã§git bashãéããã³ãã³ããå®è¡ããå¿
èŠããããŸãã
git clone git://github.com/4gott3n/AT.git master
ããšãã°ã
ãã®èšäºã§Gitã®ä»äºã«æ
£ããããšãã§ããŸãã
次ã«ãVisual Studioã§
AT.sln
ãã¡ã€ã«ãéããATãããžã§ã¯ãïŒãã¬ãŒã ã¯ãŒã¯èªäœïŒãå«ããœãªã¥ãŒã·ã§ã³ãããã³ããŒãžããã¹ããªã©ã®å®è£
ã確èªã§ãããã¹ããããžã§ã¯ãã®äŸã確èªããŸãã ïŒåœŒã¯èªåã®ãããžã§ã¯ããäœæããããã®äŸ¿å©ãªäŸã§ãïŒã
次ã®ã¹ãããã¯ããã¹ãŠã®ãã¹ããããŒãžããã®ä»ãã¹ãŠãä¿åãããããžã§ã¯ããäœæããããšã§ãã
ããªããããå¿
èŠãããããšïŒ
- ãœãªã¥ãŒã·ã§ã³ã«æ°ãããããžã§ã¯ãïŒã¯ã©ã¹ã©ã€ãã©ãªïŒã远å ããŸã;åŸã§ãã®ååãApp.configã«ç»é²ããå¿
èŠããããŸãã
- ãªã³ã¯ãæ¥ç¶ããŸãã
çµæã¯å³ã®ããã«ãªããŸãã
- App.configæ§æãã¡ã€ã«ãäœæããŸãã
ãã®ãã¡ã€ã«ã«ã¯ããããžã§ã¯ãã®ãã¹ãŠã®åºæ¬ãã©ã¡ãŒã¿ãŒãå«ãŸããŸãã
詳现ã App.config <add key="project_name" value="SampleTestProject"/> <add key="smtp_server" value=" smtp " /> <add key="smtp_port" value="" /> <add key="smtp_login" value="" /> <add key="smtp_password" value="" /> <add key="mail_from" value=" email" /> <add key="mail_to" value=" " /> <add key="ImplicitlyWait" value=" ( )" /> <add key="WaitForAjax" value=" ajax ( )" /> <add key="browser" value=" (firefox, chrome iexplore)" /> <add key="browser_check_url" value="http://ya.ru" /> <add key="Yandex" value="http://yandex.ru/" /> <add key="dash_prefix" value="___" /> <add key="extension_prefix" value="__" /> <-- ( ), index-1.html index___1__html --> <add key="folder_index_prefix" value="_fld" /> <add key="database_name_prefix" value="db_" /> <add key="database_selected_rows_limit" value="50" /> <add key="db_test" value="172.18.XX.XX;1521;SID;LOGIN;PASSWORD;oracle" /> <add key="test_step_prefix" value="step_" /> <add key="test_case_prefix" value="test_" /> <add key="datetime_string_format" value="yyyy-MMM-dd -> hh:mm:ss" /> <add key="log_file_name" value="system.log" /> <--! -->
- ããŒãžïŒWebPagesïŒçšã®ãã©ã«ããŒãäœæããŸãã
ãã®ãã©ã«ããŒã«ã¯ãããŒãžã¯ã©ã¹ã®ãã¡ã€ã«ãå«ãŸããŸãã
詳现ã WebPagesããã€ãã®ã«ãŒã«ïŒ- ããŒãžãã©ã«ããŒã¯WebPagesãšåŒã°ããå¿
èŠããããŸãã
- ãããžã§ã¯ãã®ã«ãŒãã«ããå¿
èŠããããŸãã
- å
éšã«ã¯ããã¹ãããã·ã¹ãã ã®ã«ãŒããã©ã«ããŒãå«ãŸããŠããå¿
èŠããããŸãïŒããšãã°ãYandexããã¹ãããŠããå Žåãyandexãã©ã«ããŒã¯WebPagesãã©ã«ããŒã«ããå¿
èŠããããŸãïŒã
- ãã©ã«ãå
ã®ããŒãžã¯ããã¹ã察象ã®ã·ã¹ãã å
ãšåãéå±€ã«ããå¿
èŠããããŸãã
äŸïŒ
ããŒãžïŒ test.ru/step1/service/index.html
ãã©ã«ããŒéå±€ïŒWebPages-> Test-> step1-> service-> index.html.cs
éèŠïŒãã©ã«ããŒåãšã¯ã©ã¹åã¯å€§æåãšå°æåãåºå¥ãããŸã - ããŒãžã¯ã©ã¹ãã¡ã€ã«åã¯å®éã®ããŒãžåãšäžèŽããå¿
èŠããããŸã
ããŒãžã¯ã©ã¹åïŒ
äŸïŒããŒãžïŒindex-1.html
ã¯ã©ã¹ïŒindex___1__html
ããã«ïŒ
- ããŒãžã¿ã€ãã«ã®ãã€ãã³ã¯3ã€ã®ã¹ã©ãã·ã¥ã«çœ®ãæããããŸãïŒApp.configã§dash_prefixãã©ã¡ãŒã¿ãŒã倿Žã§ããŸãïŒã
- ãã¡ã€ã«ãã€ã³ãã¯2ã€ã®ã¹ã©ãã·ã¥ã«çœ®ãæããããŸãïŒApp.configã§extension_prefixãã©ã¡ãŒã¿ãŒã倿Žã§ããŸãã
ãã¡ã€ã«åã¯ãªããããã©ã«ããŒã®ã¿ãããå Žåã®ã¯ã©ã¹åïŒ
äŸïŒããŒãžïŒ
test.ru/step1/serviceã¯ã©ã¹ïŒ_fldïŒå€æŽå¯èœãApp.configã®folder_index_prefixãã©ã¡ãŒã¿ãŒïŒ
- Pages.csã¯ã©ã¹ãäœæãã
public static class Pages { }
ã¯ã©ã¹ã«ã¯ããŒãžã¯ã©ã¹ãªããžã§ã¯ãïŒWebPageïŒãå«ãŸããŸãã
詳现ã Pages.csãã®ã¯ã©ã¹ã«ã¯ãèŠçŽ ãžã®ã¢ã¯ã»ã¹ã«äœ¿çšãããããŒãžã¯ã©ã¹ãªããžã§ã¯ããªã©ãå«ãŸããŸãã
ããã€ãã®ã«ãŒã«ïŒ- ãã®ã¯ã©ã¹ã§ã¯ããµãã¯ã©ã¹ã®éå±€ã¯WebPagesãã©ã«ããŒã®éå±€ãšäžèŽããå¿
èŠããããŸãã
- ã¯ã©ã¹ãšãã®äžã®ãã¹ãŠã®ãªããžã§ã¯ãã¯public staticã§ãªããã°ãªããŸããã
ã¯ã©ã¹ã®äŸïŒ public static class Pages { public static class Test { public static index__html Index = new index__html(); public static class step1 { public static class service { public static _fld Main = new _ fld(); } public static add__php Add = new add__php(); } } }
ãã®ãšã³ããªã«ãããããŒãžã¯æ¬¡ã®ãããªãã¹ãã§å©çšå¯èœã«ãªããŸãã
Pages.Test.Index.Open(); Pages.Test.step1.service.Main.Open();
- ãã¹ãçšã®ãã©ã«ããŒãäœæããŸãïŒãã¹ãïŒ
ç¹å¥ãªã«ãŒã«ã¯ãããŸããããããžã§ã¯ãã«ãŒãã«Testsãã©ã«ããŒãäœæããå¿
èŠã«å¿ããŠããã¹ããããã·ã¹ãã äžã«ãã¹ãçšã®ãã©ã«ããŒãäœæããŸãã
詳现ã ãã¹ãåçã¯ããããç§ã®ãããžã§ã¯ãã§ã©ã®ããã«è¡ããããã瀺ããŠããŸãã
åžžã«æåãšæåŸã«å®è¡ããã2ã€ã®ããµãŒãã¹ããã¹ããäœæããããšã¯éåžžã«é©åã§ãã æåã®ãã¹ãã§ã¯ãããŸããŸãªã¢ã¯ã·ã§ã³ãå®è¡ããŠç°å¢ãæ§æã§ããŸããæåŸã®ãã¹ãã§ã¯ãããšãã°ãã¹ã¿ã³ãããããã«ããŠéç¥ãéå§ããŸãã
Nunitã¯ïŒå®å
šãªã¯ã©ã¹åã§ïŒã¢ã«ãã¡ãããé ã§ã«ããŽãªå
ã®ãã¹ããå®è¡ããŸãéç¥ãéå§ããã«ã¯ãã³ãŒããå®è¡ããå¿
èŠããããŸãã
AT.Service.Notifier.SendNotif();
Environment.csã¯ã©ã¹ãäœæããããšã圹ç«ã¡ãŸã
public static class Environment { }
å人çã«ã¯ãããŸããŸãªã°ããŒãã«å€æ°ãšå®æ°ãä¿åããããã«äœ¿çšããŸãã
ããŒãžäœæã®äŸïŒWebPagesïŒäœæããããã¹ãŠã®ããŒãžã¯ãããŒã¹ã®
PageBase
ã¯ã©ã¹ããç¶æ¿ãããŸãããã®ã¯ã©ã¹ã«ã¯ããã¹ãŠã®ããŒãžã§åãå¿
èŠãªã¡ãœããïŒãéãããããã©ã¡ãŒã¿ãŒã§éããããget UrlãïŒãå«ãŸããŸãã
ããŒãžã¯ã©ã¹ã®äŸïŒ public class index__php : PageBase { public void OpenVpdnTab() { new WebElement().ByXPath("//a[contains(@href, '#internet')]").Click(); } public string VpdnAction { get { return new WebElementSelect().ByXPath("//select[@name='action']").GetSelectedValue(); } set { new WebElementSelect().ByXPath("//select[@name='action']").SelectByValue(value); } } public string VpdnLid { set { new WebElement().ByXPath("//input[@name='lid']").SendKeys(value); } } public string VpdnTechlist { set { new WebElement().ByXPath("//input[@name='file']").SendKeys(value); } } public string VpdnStartDate { set { new WebElement().ByXPath("//input[@name='start_date']").SendKeys(value); } } public void VpdnSubmit() { new WebElement().ByXPath("//input[@value='']").Click(); } }
ã«ãŒã«ïŒããŒãžã«ååšãããã¹ãŠã®èŠçŽ ã¯ãã¢ã¯ã»ã¹æã«åæåããå¿
èŠããããŸãã
ããŒãžã®äœ¿çšäŸïŒPages.Test.Index.Open();
-ãªãŒãã³
Pages.Test.Index.Open(â?id=1â);
-ãã©ã¡ãŒã¿ã§éã
var url = Pages.Test.Index.Url;
-ããŒãžã¢ãã¬ã¹ãååŸãã
Pages.Test.Index.VpdnSubmit();
-äžèšã®ããŒãžã¯ã©ã¹ã§èŠå®ãããŠããæ©èœã®èµ·å
ãã¹ãã±ãŒã¹ã®äœæäŸïŒãã¹ãïŒäžèšã®ããã«ããã¹ãŠã®ãã¹ãã±ãŒã¹ã¯
Tests
ãã©ã«ããŒã«ããå¿
èŠããããŸãã
ãã¹ãŠã®ãã¹ãã±ãŒã¹ã¯ãããªãã¯ã§ããã
TestBase
åºæ¬ã¯ã©ã¹ããç¶æ¿ããå¿
èŠããããŸãã
屿§
[TestFixture]
ã¯ããã¹ãã±ãŒã¹ãæã€ã¯ã©ã¹ã®ååã®åã«æå®ããå¿
èŠããããŸãã
ãã¹ãã±ãŒã¹ã®åã¹ãããã®åã«ã
[Test]
屿§ãæå®ããå¿
èŠããããŸãã
ãã¹ã屿§ã®è©³çްã«ã€ããŠã¯ã
ãã¡ããã芧ãã ãã ã
ãã¹ãã±ãŒã¹ã®ããã¯ã©ã¹ã®äŸïŒ namespace TestProject.Tests.OSE { [TestFixture] [Category("OSE"), Category("OSE_Internet")] public class test_253750 : TestBase { [Test] public void step_01() { Pages.OSE.Inaclogin.Open(); Pages.OSE.Inaclogin.Login = âuserâ; Pages.OSE.Inaclogin.Password = âpasswordâ; Pages.OSE.Inaclogin.Submit(); Assertion(" â, () => Assert.AreEqual(Pages.OSE.Inaclogin.IsAuthSuccess, true)); } }
Assertion
ã¯ãæ¡ä»¶ã®æ€èšŒã§ãã
ã¬ã³ãŒã圢åŒïŒ
Assertion ( , () => Assert._accert__nunit() );
ãªãAssertã䜿çšããªãã®ã§ããïŒ
ãã¹ãŠã®ã¢ãµãŒãã¯ããšã©ãŒããã®ã³ã°ãªã©ãç»é²ããããã®ã¢ã¯ã·ã§ã³ãå®è¡ãããç¹å¥ãªã¯ã©ã¹ã«ææãããŸãã
ããŒã¿ããŒã¹ã®äœ¿çšäŸããŒã¿ããŒã¹ãæäœããã«ã¯ãã¡ãœãããå«ã
AT.DataBase.Executor
ã¯ã©ã¹ã
AT.DataBase.Executor
ããŸãã
- éžæèŠæ±ã®éžæïŒéžæïŒ;
- æ¿å
¥ãæŽæ°ãåé€ïŒéžæè§£é€ïŒãªã©ã®ã¯ãšãªã®å®è¡ã
- ã¹ãã¢ãããã·ãŒãžã£ã®å®è¡ã
äŸïŒéžæããŠãã ããïŒ
var query = select col1, col2 from table_name"; var list = Executor.ExecuteSelect(query, Environment._);
éžæè§£é€ïŒ
var query = âDELETE FROM table_name"; Executor.ExecuteUnSelect(query, Environment._);
ã¹ãã¢ãããã·ãŒãžã£ã®å®è¡ïŒ
Executor.ProcedureParamList.Add(new ProcedureParam("varchar", "_", «»)); Executor.ProcedureParamList.Add(new ProcedureParam("varchar")); var res = Executor.ExecuteProcedure("_", Environment._);
_
ã¯ãApp.configã®dbåæåæååã®sidå€ãšäžèŽããå¿
èŠããããŸã
<add key="db_test" value="172.18.XX.XX;1521;SID;LOGIN;PASSWORD;oracle" /> <! -- -->
ãã¹ãçµæãšãµã³ãã«ã¬ããŒãã®åéïŒåè¿°ã®ããã«ãéç¥ãéå§ããŠã¡ãŒã«ãžã®ã¬ããŒããåä¿¡ããã«ã¯ãæåŸã®ãã¹ããéå§ããåŸãã³ãŒã
AT.Service.Notifier.SendNotif();
å®è¡ããå¿
èŠããããŸã
AT.Service.Notifier.SendNotif();
NUnitã®ããžãã¯ã¯ãããããã¢ã«ãã¡ãããé ã«ãã¹ããå®è¡ãããããç®çã®ãã¹ããæåŸã«èµ·åãããããã«ãããã«å¿ããŠåŒã³åºãå¿
èŠããããŸãã
ã¢ã©ãŒãèšå®ã¯App.configãã¡ã€ã«ã§æå®ãããŸãã
ã¬ããŒãã®äŸïŒãŸã 湿ã£ãŠããŸãããæ
å ±ãååã§ã¯ãããŸããïŒïŒèªåãã¹ãã¬ããŒã000001 | 倱æããŸãã | step_01ïŒãšã©ãŒ 次㞠ã¹ãããïŒã¹ãããã倱æãããåã®ã¹ãããã®ãšã©ãŒ 次㞠ã¹ãããïŒã¹ãããã倱æãããåã®ã¹ãããã®ãšã©ãŒ 次㞠ã¹ãããïŒã¹ãããã倱æãããåã®ã¹ãããã®ãšã©ãŒ
|
ãŸãšã ïŒ
åæ Œç= 0ïŒ
ã
ãã®ããã€ã³ã¹ãã©ã¯ã·ã§ã³ã®ãã¹ãŠã®ãã€ã³ããå®äºããè¥ããã¹ã¿ãŒ-èªååãšã³ãžãã¢ã¯ãèªåã®ãããžã§ã¯ãããã°ããäœæãããã®æ
ãå§ããããã«å¿
èŠãªæå°éã®ãã®ãæã«å
¥ããããšãã§ããŸãã
ãŸãšããŸããææ¡ãããã·ã¹ãã ããŸã 宿ããŠããªãããšãå®è£
ãããå€ãã®ã¢ã€ãã¢ãããããšã¯æ³šç®ã«å€ããŸãïŒèŠªæãªãèªè
ããã®æ¹åã®ããã®ææ¡ãæ¬åœã«æåŸ
ããŠããŸãïŒã
èå³ãããå Žåã¯ã次ã®èšäºã§ããã¬ãŒã ã¯ãŒã¯ã®åäœããã¹ãã®ã»ããã¢ãããšå®è¡ã«ã€ããŠè©³ãã説æããŸãã
ãã¹ãã®å®è¡ã«é¢ããŠèšãã°ãä»äºã§ç¡æã®
teamcityã䜿çšããŠãããšããèšããŸããããããã¯éåžžã«äŸ¿å©ã§ç¿åŸãããããšæããŸãã
ãã®æçš¿ãèªãã§ã誰ãã®åœ¹ã«ç«ã€ããšãé¡ã£ãŠããŸãã
ãæž
èŽããããšãããããŸããã