有一位博友問了一些關於fitnesse的問題,我覺得都是不錯的問題。發在自己的blog裏,感興趣的同行,可以一起討論。
1. 如何不讓fitnesse自動把駝峯命名形式的字符串識別爲一個新頁面(有沒有轉義符之類的)
試試單引號。因爲fitnesse是基於wiki page的,你可以google一下wiki的語法。
2. 如何把某個路徑或某個jar包定義爲“全局”應用。這樣就不用在每個測試頁面重複定義一遍了。
在fitnesse裏面,有testsuite的概念,比如我們這個工具的frontpage是這樣寫的:紅色的是code.
# BasicTestSetup就是一個test suite.
'''Testsuites'''
|>BasicTestSetup|''Basic Test Setup''|
# 定義class path
----
'''Classpath'''
!path fitnesse*.jar
!path ./lib/*.jar
# 定義全局變量
----
'''Definitions'''
!define TEST_SYSTEM {slim}
!define BROWSER_TO_TEST {Internet Explorer}
!define START_URL {localhost:8080}
另外,每個testsuite裏面有setup page和teardown page.你可以把一些初始化這個test suite的東西放到setup page裏面去。對於clean up的東西,比如關閉瀏覽器這個的操作放到tear down page。Set up page和teardown page是會被這個suite裏面的每個test case自動調用的。詳細內容參見fitnesse的user guide.
3. 如何在fitnesse測試裏使用測試數據文件(比如作爲動態參數之類的)?放在哪裏,如何加載,這個有經驗嗎?
這個涉及到框架問題了。我的經驗是將測試數據放到一個page下,在test case裏面include,做到測試數據和測試腳本分離。比如 test data的頁面是這樣的:
# InsertData這個頁面裏面有很多頁面,每個頁面裏都有測試數據,比如truck one 裏面定義了一些變量。
http://localhost:82/FrontPage.BasicTestSetup.InsertData
|>TruckOne|''Truck One''|
|>TruckTwo|''Truck Two''|
http://localhost:82/FrontPage.BasicTestSetup.InsertData.TruckOne
!define vehicleDisplayName {rt_70_t1h_4m}
!define vehicleVin {55200004611114770}
我再介紹一下如何使用這個頁面:include測試數據的頁面
http://localhost:82/FrontPage.BasicTestSetup.SetupOtherData.SetupVehicles
!include -c .FrontPage.BasicTestSetup.InsertData.TruckOne
Table裏面這樣調用變量
!|script|pages.CreateVehiclePage|
|type display name|${vehicleDisplayName}|
|type vin|${vehicleVin}|
這樣的設計可以很好的分離測試數據和測試代碼。
4.你的那個示例代碼我運行不成功啊,我已經引入了selenium-java-2.31.0.jar ,且import 如下類:
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebDriverBackedSelenium;
import org.openqa.selenium.firefox.internal.ProfilesIni;
import org.openqa.selenium.firefox.*;
import org.openqa.selenium.ie.InternetExplorerDriver;
import com.thoughtworks.selenium.*;
編譯通過,但執行異常。是不是還需要哪些文件?
呵呵,我那個示例代碼很有可能不成功,只是一個示例。因爲我們在selenium的基礎上,定義了一些自己的類。其中最主要的就是Browser這個類了。這部分是由其他開發做的,我也只是使用而已。代碼是不能公佈的,因爲公司有security policy。我只能提供思路,我們把webdriver,和selenium這兩個類都包含到Browser這個類中,作爲成員。然後定義了一些方法,比如打開瀏覽器等等。