使用NUnit我希望针对多种文化在某个项目中运行所有测试.
该项目处理解析应该是文化中立的数据,以确保我想针对多种文化运行每个测试.
我目前的解决方案是
public abstract class FooTests {
/* tests go here */
}
[TestFixture, SetCulture ("en-GB")] public class FooTestsEN : FooTests {}
[TestFixture, SetCulture ("pl-PL")] public class FooTestsPL : FooTests {}
Run Code Online (Sandbox Code Playgroud)
理想情况下,我不应该创建这些类,而是使用类似的东西:
[assembly: SetCulture ("en-GB")]
[assembly: SetCulture ("pl-PL")]
Run Code Online (Sandbox Code Playgroud)
不幸的是,现在这是不可能的,但计划将来使用.
你也可以这样做.
public class AllCultureTests
{
private TestSomething() {...}
[Test]
[SetCulture("pl-PL")]
public void ShouldDoSomethingInPoland()
{
TestSomething();
}
}Run Code Online (Sandbox Code Playgroud)
也许这是你更喜欢的东西?
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"));
}
Run Code Online (Sandbox Code Playgroud)
请注意,此单元测试将失败de-da对不同文化的测试非常重要:)
| 归档时间: |
|
| 查看次数: |
1250 次 |
| 最近记录: |