测试私有静态函数问题

4

我在寻找一个私有静态方法的方法时遇到了问题。尽管我知道测试并不是必要的,但我的老板希望进行测试。

这是我正在尝试测试的代码:

 namespace Retail_Utilities.Printables
    {
        public partial class WarrantyDropoffSlip : INotifyPropertyChanged
        {     
            private static string AddBusinessDays(string businessDays)
            {
                if (string.IsNullOrEmpty(businessDays)) return DateTime.Now.ToShortDateString();
                var bDays = int.Parse(businessDays);
                var date = DateTime.Now;
                while (bDays > 0)
                {
                    date = date.AddDays(1);
                    if (date.DayOfWeek != DayOfWeek.Saturday && date.DayOfWeek != DayOfWeek.Sunday)
                        bDays--;
                }
                return date.ToShortDateString();
            }
      }
}

这是我的测试代码。

namespace RetailUtilitiesUnitTests.Printables_TEST
{
    [TestClass]
    public class WarrantyDropoffSlipTEST
    {
        [TestMethod]
        public void AddBusinessdays_ValidInput()
        {
            PrivateObject po = new PrivateObject(typeof(WarrantyDropoffSlip));
            object[] parameters = {"Sunday"};
            po.Invoke("AddBusinessDays", parameters);
        }
    }
}

有什么想法吗?

通常在你的测试代码中,你会编写一个公共方法来处理这个问题。 - leppie
1个回答

6
你可以使用PrivateType类来访问私有静态方法。
你可以这样使用它:
var pt = new PrivateType(typeof(WarrantyDropoffSlip));
object[] parameters = {"Sunday"};
pt.InvokeStatic("AddBusinessDays", parameters);

我该如何使用它?我感到相当困惑。 - Shikumaru

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接