6

特定のカルチャに依存する単体テストがあります。

FixtureSetup で、 と の両方Thread.CurrentThread.CurrentCultureThread.CurrentThread.CurrentUICulture目的の値 (en-US) に設定しました。

Resharper からテストを実行すると、パスします。

TeamCity から (ランナー「NUnit 2.4.6」を使用して) テストを実行すると、 (私の OS の文化) であるCurrentCultureため、テストは失敗します。cs-CZしかしCurrentUICulture、まだen-USです。

4

5 に答える 5

11

現在のスレッドでテストを実行するための特定のカルチャを強制できますSystem.Threading.Thread.CurrentThread

// set CurrentCulture to Invariant
Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
// set UI culture to invariant
Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;

CultureInfo.GetCultureInfoを使用して、使用したいカルチャを提供することもできます。SetUpこれは、テストの一部でダウンする可能性があります。

TearDown分離を確実にするために、文化を以前のものに復元することを忘れないでください

[TestFixture]
class MyTest {
  CultureInfo savedCulture;

  [SetUp]
  public void SetUp() {
    savedCulture = Thread.CurrentThread.CurrentCulture;
    Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
  }

  [TearDown]
  public void TearDown() {
    Thread.CurrentThread.CurrentCulture = savedCulture;
  }
}
于 2011-01-19T08:26:33.637 に答える
3

TeamCity が別のスレッドで FixtureSetup と単体テストを実行しているか、何らかの方法でCurrentUICulture.

と の両方CurrentUICultureを( の代わりに)CurrentCultureに設定すると、問題が解決しました。SetUpFixtureSetup

于 2011-02-15T07:44:47.607 に答える
2

NUnit 2.4.2 以降では、SetCulture 属性を使用できます。

namespace NUnit.Tests
{
  using System;
  using NUnit.Framework;

  [TestFixture]
  [SetCulture("fr-FR")]
  public class FrenchCultureTests
  {
    // ...
  }
}

例は、以下のリンクから取得されます。詳しくはリンク先もご参照ください。

https://github.com/nunit/docs/wiki/SetCulture-Attribute

于 2016-12-09T12:13:51.500 に答える
1

私のテストでは、個々のテストメソッド内で CurrentUICulture を設定およびリセットしました

      

            var tempCurrentUICulture = Thread.CurrentThread.CurrentUICulture;
            try
            {
                Thread.CurrentThread.CurrentUICulture = new CultureInfo("zh-HK" );
                 actual = target.MethodToTest(resourceSet, localeId);
            }
            finally
            {
                Thread.CurrentThread.CurrentUICulture = tempCurrentUICulture;
            }
于 2013-04-18T11:38:47.497 に答える