NUnit,针对多种文化进行测试

时间:2011-05-13 12:10:06

标签: nunit culture

使用NUnit我希望针对多种文化在某个项目中运行所有测试。

该项目处理解析应该是文化中立的数据,以确保我希望针对多种文化运行每个测试。

我目前的解决方案是

public abstract class FooTests {
    /* tests go here */
}

[TestFixture, SetCulture ("en-GB")] public class FooTestsEN : FooTests {}
[TestFixture, SetCulture ("pl-PL")] public class FooTestsPL : FooTests {}

理想情况下,我不应该创建这些类,而是使用类似的东西:

[assembly: SetCulture ("en-GB")]
[assembly: SetCulture ("pl-PL")]

3 个答案:

答案 0 :(得分:5)

不幸的是,现在这是不可能的,但计划将来使用。

您也可以这样做。

public class AllCultureTests
{
  private TestSomething() {...}

  [Test]
  [SetCulture("pl-PL")]
  public void ShouldDoSomethingInPoland()
  {
    TestSomething();
  }
}

也许这是你更喜欢的东西?

答案 1 :(得分:3)

NUnit' SetCultureAttribute一种文化应用于测试,但尚未支持多种文化。

您可以使用TestCaseAttribute语言代码并手动设置文化来解决此问题:

    [Test]
    [TestCase("de-DE")]
    [TestCase("en-US")]
    [TestCase("da-DK")]
    public void YourTest(string cultureName)
    {
        var culture = CultureInfo.GetCultureInfo(cultureName);
        Thread.CurrentThread.CurrentCulture = culture;
        Thread.CurrentThread.CurrentUICulture = culture;

        var date = new DateTime(2012, 10, 14);
        string sut = date.ToString("dd/MM/yyyy");
        Assert.That(sut, Is.EqualTo("14/10/2012"));
    }

请注意,deda的单元测试失败 - 对不同文化的测试非常重要:)

答案 2 :(得分:1)

如果你不介意转换,MbUnit已经有feature for nearly five years now

您可以在测试,夹具和装配级别应用MultipleCulture属性。