0

英語以外の言語でエラー メッセージを表示する単体テスト ケースを作成しましたが、機能していないようで、何が欠けているのかわかりません。

詳細は次のとおりです。

属性を使用しています。

app.config (nhibernate cfg を除外しました):

<configSections>
  <section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate"/>
  <section name="nhv-configuration" type="NHibernate.Validator.Cfg.ConfigurationSectionHandler, NHibernate.Validator" />    
</configSections>

<nhv-configuration xmlns="urn:nhv-configuration-1.0">
  <property name='apply_to_ddl'>false</property>
  <property name='autoregister_listeners'>true</property>
  <property name='default_validator_mode'>OverrideExternalWithAttribute</property>
</nhv-configuration>

バリデーターの初期化:

private void InitializeValidator()
{
  var provider = new NHibernateSharedEngineProvider();
  provider.GetEngine().Configure();
  NHibernate.Validator.Cfg.Environment.SharedEngineProvider = provider;
}

テスト関数 (EntityDescription は私のエンティティ クラスであり、Repository は Repository クラスを使用したシャープなアーキテクチャ設計に従います):

[Test]
public void TestNhValidationSp()
{
  CultureInfo ci = CultureInfo.GetCultureInfo("fr");

  Thread.CurrentThread.CurrentCulture = ci;
  Thread.CurrentThread.CurrentUICulture = ci;
  TestNhValidation();
}

private void TestNhValidation()
{
  IEntityDescriptionRepository repository = GetObject<IEntityDescriptionRepository>();

  ISession session = NHibernateSession.Current;
  EntityDescription entityDescription=
    (from kpad in session.Query<EntityDescription>()
     select kpad).FirstOrDefault();
  entityDescription.Title = "012345678901234567890123456789012345678901234567890123456789";
  try
  {
    repository.SaveOrUpdateWithTransaction(entityDescription);
    Assert.IsTrue(false);
  }
  catch (Exception ex)
  {
    Console.WriteLine(ex.Message);
    Assert.IsTrue(ex is InvalidStateException);
    InvalidStateException isex = (InvalidStateException) ex;
    foreach (InvalidValue invalidValue in isex.GetInvalidValues())
    {
      Console.WriteLine("PropertyName={0} Message={1}", invalidValue.PropertyName, invalidValue.Message);
    }
  }
} 

設定 entityDescription.Title = "012345678901234567890123456789012345678901234567890123456789";

タイトルには最大 50 文字を使用できるため、検証エラーが発生します。

問題は、メッセージが常に英語で表示されることです。何かご意見は?

追加したいことの 1 つは、テスト プロジェクトが SharpArchitecture プロジェクト (1.9.5) に依存していることです。どういうわけか、これが私の nhibernate バリデーターの設定を台無しにするのではないかと思います。

次のメッセージが見つかりました:同様の問題を報告するS#arp アーキテクチャを使用した NHibernate Validation Localization 。

4

1 に答える 1

0

dll のバージョンが混在しているため、自分のせいだと思います。

SharpArchitecture 1.9.5 は、NH 2.1.0 でコンパイルされた NHV 1.2.0 を使用します。上記のテストでは NHV 1.3.1 を使用しました (最新バージョンの NHV にアップグレードしたかったのです) が、うまくいきませんでした。メッセージは正しい言語で表示されませんでした。

NHV 1.2.0 を再コンパイルして NH 3.1.0 を使用し、NHV 1.2.0 に切り替えたところ、テストが正常に動作するようになりました。

于 2011-11-23T19:45:18.510 に答える