2010-03-12 62 views
2

代碼具有運行時依賴關係,這在我們的開發環境中是不可用的(並且在測試和產品中可用)。實際測試依賴性是很昂貴的,我想測試環境。測試以識別您的開發環境?

if (isDevEnvironment) { 
    // fake it 
} 
else { 
    // actually do it 
} 

如果不使用appSettings,您將使用什麼代碼/技術/測試來設置isDevEnvironment

示例答案:

  • 檢查機器名(部分或全部)
  • 檢查爲環境變量

,我希望有一個運行Visual Studio的任何實例

  • 檢查測試我沒有考慮過。

  • +0

    不是一個真正的答案,但我想創建一個圍繞這一資源的接口,並有一個真正的和虛擬的類。這仍然會讓你面臨測試某個東西來決定使用哪一個的問題。配置將是最好的,但我知道你不能使用它。 – 2010-03-12 14:58:08

    +0

    你究竟想要做什麼? – azamsharp 2010-03-12 19:27:48

    回答

    3

    您應該嘗試在代碼中嘗試未測試您的環境!這就是爲什麼依賴倒置(然後是注入)的原因。

    NewSpeak,其中其中所述完整平臺一個對象被抽象和作爲參數向下方法的調用鏈傳遞繪製一些啓示。

    0

    你已經擊中了主要的技術。在我目前的工作中,我們使用Enviroment變量技術。

    在以前的工作中,所有服務器都有三個NIC,公共前端,服務器到服務器通信的中間層以及後端網絡操作將連接到的端口。

    有不同的IP子網。它可以很容易地發現問題出在哪裏,但也知道是誰在哪裏。

    例子:

    • 10.100.x.xxx - 生產子網
    • 10.100.1.xxx - 返回
    • 10.100.2.xxx - 中東
    • 10.100.3.xxx - 前

    • 10.0.1.x - 發展子網

    這不需要在服務器上專門安裝,只需進行代碼檢測然後進行緩存。

    2

    您提供的代碼(if (isDevEnvironment) ..)與test code in production有異味。

    不使用appSettings,您將使用什麼代碼/技術/測試來設置isDevEnvironment?

    一般來說,依賴注入。

    但也提供鏈接中可能的解決方案。

    您不應該檢查環境,而是需要提供環境。

    0

    我更喜歡這樣做:

    if(Properties.Settings.Default.TestEnvironment || HttpContext.Current.Request.ServerVariables["Server_Name"] == "localhost") 
    { 
    // do something 
    }