c# - 发布测试私有(private)静态函数

标签 c# unit-testing

我在获取私有(private)静态方法时遇到问题。我的老板希望对此进行测试(尽管我知道这并不是真正需要测试的)。

这是我要测试的代码:

 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);
        }
    }
}

有什么想法吗?

最佳答案

您可以使用 PrivateType访问私有(private)静态方法的类。

您将以这种方式使用它:

var pt = new PrivateType(typeof(WarrantyDropoffSlip));
object[] parameters = {"Sunday"};
pt.InvokeStatic("AddBusinessDays", parameters);

关于c# - 发布测试私有(private)静态函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30984183/

相关文章:

unit-testing - 在不运行 @SpringBootApplication 的情况下测试 Spring Boot 服务

c# - 将 dateTime 转换为 ISO 格式 yyyy-mm-dd hh :mm:ss in C#

c# - 如何在asp.net中使用fileupload获取正确的路径?

c# - 如何在 mvc 中绑定(bind)复杂对象列表以查看帖子上的模型?

c# - NUnit 不等待异步任务完成

java - 我正在尝试为插入时间表的方法编写一个 JUnit 测试用例,该时间表将参数作为员工 ID。我应该如何尝试?

firebase - 如何在 flutter 中模拟 FirebaseApp

c# - NHibernate 和多个数据库

c# - 如何将 anchor 标记 HTML 链接转换为使用 @Html.ActionLink

c# - 模拟 IJSRuntime 以进行 Blazor 组件单元测试