2011-03-03 88 views
1

我想在MSTest中測試具有可選參數的方法。單元測試中的可選參數

private CalcSomthing(double valueone, double valuetwo = 10) 
{ 
    // Do somthing 
} 

當我調用此方法時,它工作正常。但是,我運行它在單元測試(MSTest)Valuetwo不會初始化爲值10.

MSTest無法測試可選參數或我錯了嗎?

[TestMethod] 
    public void CalcSomthingTest() 
    { 
     var someclass= new Someclass_Accessor(); 
     someclass.CalcSomthing(10); 
    } 

結果是:Valueone = 10和ValueTwo = 0.0;

回答

0

該測試通過在Visual Studio 2010:

using Microsoft.VisualStudio.TestTools.UnitTesting; 

namespace TestProject1 
{ 
    public class Someclass 
    { 
     public double CalcSomthing(double valueone, double valuetwo = 10) 
     { 
      Assert.IsTrue(valuetwo == 10); 
      return valueone + valuetwo; 
     } 
    } 

    [TestClass] 
    public class UnitTest1 
    { 
     [TestMethod] 
     public void CalcSomthingTest() 
     { 
      var someclass = new Someclass(); 
      someclass.CalcSomthing(10); 
     } 
    } 
} 

在任何ReSharper的或TestRunner的:

------測試開始:大會:TestProject1.dll ----- -

1通過,0失敗,0跳過,花了1.14秒(MSTest 10.0)。

+0

我已經在TestProjekt中測試了你的解決方案,它的工作原理。在我的項目中的問題是,我使用SomeClass_Accessor,然後它不起作用。 – San 2011-03-08 12:28:22

+0

我不確定你的意思是* SomeClass_Accessor *。你能用可編譯的(可測試的)東西來更新你的例子嗎?我想知道你的失敗例子是否有編譯器正在進行優化,因爲代碼沒有使用該參數? – 2011-03-08 17:56:52

+0

很久以前我就知道了。 我想測試私有方法,爲此我需要Accessor。 只要我使用Accessor它不再工作。 – San 2011-10-18 12:52:56

0

同意它的問題。

使上述私人的方法,然後產生SomeClass_Accessor,只讀元數據,其暴露簽名

公共雙CalcSomthing(雙valueone,雙valuetwo = NULL)

代碼工作正常,但測試失敗

任何解決方案?

+0

我的解決方案不使用可選參數。我搜索了很多意見,並且都推薦使用overloadet方法。 – San 2011-10-18 12:48:15