【问题标题】:Unable to get Default Constructor for class in Unit Test Project无法在单元测试项目中获取类的默认构造函数
【发布时间】:2017-06-02 07:46:52
【问题描述】:

我创建了一个单元测试项目。我得到一个异常指定

无法获取类 *****.Tests.Controllers.PersonRegistration 的默认构造函数

namespace *****.Tests.Controllers
{
[TestClass]
public class PersonRegistration
  {
    private ILoggingService _loggingService;
    private IUserManager _userManager;
    public PersonRegistration(IUserManager userManager, ILoggingService loggingService)
    {
        this._userManager = userManager;
        this._loggingService = loggingService;
    }

    [TestMethod]
    public void TestMethod1()
    {
        RegisterBindingModel model = new RegisterBindingModel();
        AccountController ac = new AccountController(_userManager, _loggingService);
        model.UserName = "test123@gmail.com";
        var result = ac.Register(model);
        Assert.AreEqual("User Registered Successfully", result);
    }
  }
}

为了消除这个问题,一些线程说要添加一个没有参数的默认构造函数。所以我也加了这个

public PersonRegistration()
 {
 }

但后来我解决了异常。但我得到NULL 的值 _userManager_loggingService

如何解决该问题。我不想在传递时生成空值。

请在不使用Moq 或任何其他模拟框架的情况下提出解决此问题的方法来帮助我。

【问题讨论】:

  • 您好.. 如果您查看我昨天发布的问题的答案,您会发现我提供了一个不使用 Mocks 的解决方案。
  • @Wheels73。谢谢你。你告诉我添加一个没有任何参数的构造函数。但它会返回 _userManager_loggingServiceNULL
  • 我会重新发布您需要的内容。
  • @Wheels73 。你能在这里发布这个问题的答案吗
  • [ClassInitialize] public void SetUp() { _loggingService = new LoggingService(); _userManager = new UserManager(); }

标签: c# asp.net-mvc unit-testing parameterized-unit-test


【解决方案1】:

如前所述。

在初始化测试类时运行一次。

[ClassInitialize]
public void SetUp()
{
    _loggingService = new LoggingService();
    _userManager = new UserManager();
}

你也可以使用

 [TestInitialize]
 public void Initalize()
 {
      _loggingService = new LoggingService();
       _userManager = new UserManager();
 }

这将在每次测试运行之前运行,以防每次测试需要不同的条件。

如前所述。 ILoggingService 和 IUserManager 是接口。您需要将它们实例化到任何实现类“实现”该接口。

如果您不确定.. 右键单击​​接口名称并选择“Go To Implementation”

【讨论】:

    猜你喜欢
    • 2017-11-02
    • 1970-01-01
    • 2023-03-28
    • 2014-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多