2011-05-13 4 views
4

NUnit을 사용하여 특정 프로젝트에서 모든 문화권 테스트를 실행하고 싶습니다.NUnit, 여러 문화에 대해 테스트하기

프로젝트는 여러 문화권에 대해 모든 테스트를 실행하기 위해 문화 중립적이어야하는 데이터 구문 분석을 다룹니다. Unfortunatelly이 지금 할 수 없습니다 만입니다

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

답변

3

:

내가 가진 현재의 솔루션은 내가 좋아하는 뭔가를이 클래스를 생성하고 대신 사용할 필요가 없습니다, 이상적으로

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

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

입니다 미래를 계획했다.

이 작업을 수행 할 수도 있습니다.

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

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

아마도 그게 좋을 것 같아요?

+0

NUnit 3에 대한 계획 인 것 같습니다. - https://bugs.launchpad.net/nunit-3.0/+bug/1093505 –

1

전환하는 데 문제가 없으면 MbUnitfeature for nearly five years now이 포함되어 있습니다.

테스트, 설비 및 어셈블리 레벨에서 MultipleCulture 속성을 적용 할 수 있습니다.

+0

이 프로젝트는 적어도 반년 이래로 죽었습니다. – SOReader

+1

@SOReader : 지금하고 있지 않다면 무엇을하고 싶습니까? –

+0

작동하지 않는 기능으로 끝나면 지원을 얻는 것처럼? 최근에 죽은 새로운 도서관을 배우는 것은 나에게 위험한 것처럼 보입니다. – SOReader

2

NUnit의 SetCultureAttribute하나의 문화를 테스트에 적용하면 여러 문화가 (아직) 지원되지 않습니다.

당신은 언어 코드와 TestCaseAttribute를 사용하여 수동으로 문화를 설정하여이 문제를 해결할 수 있습니다 :이 단위 테스트가 deda 실패 할 것

[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")); 
    } 

주 - 다른 문화에 대한 테스트는 정말 중요합니다 :)입니다

관련 문제