【问题标题】:How does xUnit runner handle static methods w/static class constructor?xUnit runner 如何处理带有静态类构造函数的静态方法?
【发布时间】:2011-06-03 18:50:15
【问题描述】:

如果我有一个带有静态事实(测试方法)的类并且该类有一个静态构造函数,那么构造函数是为每个事实调用还是只为类中的所有事实调用一次?我想这取决于运行器如何加载/卸载测试类?

【问题讨论】:

    标签: .net unit-testing xunit.net xunit


    【解决方案1】:

    根据经验,我知道该类只调用一次。如果您在非静态测试(事实)中使用静态类(即设置类)也是一样的。整个测试类只调用一次静态对象构造函数。

    【讨论】:

    • 谢谢!当我们讨论这个话题时,你知道非静态方法/构造函数会发生什么吗?类是实例化一次然后调用每个方法还是每个方法都有单独的实例化?
    • 测试所在的类是构造函数,然后为每个测试销毁一次。因此,如果一个类中有 10 个事实,它将被实例化 10 次,然后销毁 10 次。将重新创建任何非静态对象。任何静态对象都将被重复使用。
    【解决方案2】:

    如果有任何东西(例如 Facts)第一次使用静态方法或类,则该静态构造函数被称为一个。如果没有对静态类的引用,则根本不调用静态构造函数。如果您正在考虑在测试之前和之后运行代码(设置/处置)ONES,我建议使用 Fixtures(请参阅 https://xunit.net/docs/shared-context)。

    【讨论】:

      猜你喜欢
      • 2021-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-24
      • 1970-01-01
      • 2011-10-07
      • 2018-01-12
      相关资源
      最近更新 更多