【问题标题】:Shall I create Unit test base我应该创建单元测试库吗
【发布时间】:2013-06-10 13:29:40
【问题描述】:

如果我创建相同测试的基础测试类是否有意义?在这种情况下是什么场景。例如,我有几乎相同的视图模型:XReport、YReport 等,我创建了一个基础测试:

public abstract  class ReportTestBase
{
    public T UC_ReportUserControl_Create<T>() where  T : class, IViewModel
    {
        return NinjectService.Get<T>();
    }
}

然后我创建衍生物:

[TestClass]
public class PsoriasisReport : ReportTestBase
{
    [TestMethod]
    public void UC_PsoriasisReportUserControl_Create()
    {
        Assert.IsNotNull(UC_ReportUserControl_Create<IPsoriasisReportUserControl>());
    }
}

这些代码只是示例。我对方法学很感兴趣。

【问题讨论】:

  • 我不会那样做。测试逻辑应尽可能简单。
  • 是的,我知道,但是有大量的冗余代码。那是怎么回事
  • 应该做任何让你的生活更轻松的事情。单元测试只是代码,每一种使代码可读和可维护的技术都是合适的。
  • 我们经常这样做以减少复制粘贴。因此,我们实现了包含帮助程序或通用测试方法的抽象测试库类。 Abstract 还避免了单元测试运行器将基测试类作为单独的测试类执行。
  • 在您的报告库中添加public TestContext TestContext { get; set; },因为这也很有用。

标签: c# asp.net .net wpf unit-testing


【解决方案1】:

如果您的 [Initialize](NUnit 中的 [SetUp])方法有一些共同点,则子类化可能对您需要一遍又一遍地进行相同设置的测试类很有用。

注意these are called 在 MSTest 中的顺序。

否则,我会按照 Pragmateek 的建议创建一个 hepler 类。

【讨论】:

    【解决方案2】:

    您可以这样做,但正如 StuffHappens 所注意到的那样,继承可能太多了。

    您不能简单地创建一个带有静态辅助方法的“TestsCommon”类来分解所有冗余代码吗?

    我已经使用过这种方法,而且效果很好,不会让代码太晦涩。

    【讨论】:

      猜你喜欢
      • 2016-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-08
      • 1970-01-01
      • 2011-01-01
      • 1970-01-01
      • 2011-06-07
      相关资源
      最近更新 更多