2011-04-05 109 views
2

我需要用一個文本框,在用戶(測試)將複製他的劇本就像一個WinForms桌面應用程序:英語測試用例解析器

ADD NEW PRODUCT "chair-$50" //should invoke AddProduct(name,price) c# method 
REMOVE PRODUCT "table" //should invoke RemoveProduct(name) c# method 

我不想寫我自己的解析器。有沒有簡單的框架來解析英文測試用例來執行方法?

很少我遇到的是SpecFlow &黃瓜,但我可以只使用他們爲我的應用程序中分析的目的沒有使用任何測試工具像NUnit的等

什麼是最好的最簡單的&選擇?我可以使用specflow嗎?

+1

是否總是''command''entity'值[s]'? – 2011-04-05 06:51:05

+0

你的命令總是隻有一個參數,或者它可能是多個參數? – 2011-04-05 07:05:56

+0

它可以有不同的參數......在實際情況下,我的測試用例就像是「發送xyz_command到ipAddress MAC地址WITH DELAY 10秒......類似這樣的東西將在1行測試用例中,將會有多條這樣的不同行。 – helloworld 2011-04-05 08:16:29

回答

0

如果你只有幾個方法想用這種方式公開,請輸入行並解析它們。每種方法都可以在兩行中完成。 (代碼在Java中,不知道C#)

while(true){ 
     String s = keyboard.nextLine();//get the user input 
     StringTokenizer st = new StringTokenizer(s); 
     String firstToken = st.nextToken(); 
     if(firstToken.equals("add")) 
      add(st.nextToken(), st.nextToken()); 
     else if(firstToken.equals("remove")) 
      remove(st.nextToken()); 
} 
+0

實際上有19-20個方法。 。我所說的是一個非常簡單的例子,即使我很想寫我自己的解析器,但它可能會從可維護性的角度來失控,因此想要使用一些現有的框架。謝謝! – helloworld 2011-04-05 06:57:04

0

如果它僅僅是一個基於命令行的語言,告訴你,你可以通過你自己的writenn一個Regex基於解析器做到這一點。 然後你可以在行命令之間使用一些命名約定,例如: 在你的類的後面添加新產品 - > Pascalize - > AddNewProduct(),所以很容易將語言擴展到其他操作。使用Convert.ChangeType注入與期望類型的函數的參數是一個想法太...等等

+0

RegEx是關鍵字,使我吸引specflow只是允許將一個屬性放在RegEx的方法上,當測試用例行匹配RegEx時,它自動被NUnit調用,但是在所有示例中這在使用像NUnit這樣的測試工具時會自動發生。在我的自定義應用程序中,我怎樣才能用我的代碼來模擬這個。也許,如果Specflow沒有幫助,我將只用你的方式 – helloworld 2011-04-05 07:09:03

+0

這並不困難:閱讀我發送的文檔,我相信你在幾分鐘內就可以完成如何操作(甚至可以挖掘一些IoC代碼,以幫助你順利過關參數策略) – 2011-04-05 07:15:20

0

如果我是你,我寧願寫簡單的框架由三個部分組成:

1)命令和參數分析器
2)設置塊,它定義命令類方法映射
3)執行程序塊,它執行類方法和傳遞PARAMS根據設置