You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

设置Visual Studio测试运行器区域性,验证CountryManager德语国家名称

验证欧盟国家名称为德语的单元测试方案

首先咱们得明确核心思路:要测试CountryManager.GetEUCountries()返回的国家名称是德语,关键是在测试执行时切换程序的UI文化为德语,这样资源文件Resources才会加载德语版本的内容,之后再逐个验证返回结果即可。

准备工作

  • 确保你的项目里已经创建了德语资源文件,比如Resources.de.resx,并且已经正确填入了各个国家的德语名称(比如France对应的德语是Frankreich,Germany对应Deutschland)。

测试代码示例(以NUnit框架为例)

using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Threading;
using NUnit.Framework;

[TestFixture]
public class CountryManagerTests
{
    // 保存原来的UI文化,测试结束后恢复
    private CultureInfo _originalUiCulture;

    // 预期的德语国家名称映射(键是国家代码,值是对应的德语名称)
    private readonly Dictionary<string, string> _expectedGermanCountryNames = new Dictionary<string, string>
    {
        {"fr", "Frankreich"},
        {"de", "Deutschland"},
        // 在这里补充其他所有欧盟国家的代码和对应德语名称
    };

    [SetUp]
    public void Setup()
    {
        // 保存当前UI文化
        _originalUiCulture = Thread.CurrentThread.CurrentUICulture;
        // 切换UI文化为德语(德国地区)
        Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("de-DE");
    }

    [Test]
    public void GetEUCountries_ReturnsCountriesWithGermanNames()
    {
        // 实例化待测试类
        var countryManager = new CountryManager();
        // 获取欧盟国家列表
        var euCountries = countryManager.GetEUCountries().ToList();

        // 验证返回的国家数量和预期一致
        Assert.That(euCountries.Count, Is.EqualTo(_expectedGermanCountryNames.Count));

        // 逐个验证每个国家的名称是否为德语
        foreach (var country in euCountries)
        {
            Assert.That(_expectedGermanCountryNames.TryGetValue(country.Code, out var expectedName), Is.True, 
                $"未找到国家代码{country.Code}的预期德语名称");
            Assert.That(country.Name, Is.EqualTo(expectedName), 
                $"国家代码{country.Code}的名称不符合预期德语名称");
        }
    }

    [TearDown]
    public void Teardown()
    {
        // 恢复原来的UI文化,避免影响其他测试
        Thread.CurrentThread.CurrentUICulture = _originalUiCulture;
    }
}

关键细节说明

  • UI文化切换:资源文件的加载是基于CurrentThread.CurrentUICulture的,所以测试前必须切换到德语文化,测试后恢复原文化,防止干扰其他测试用例。
  • 预期映射表:把每个国家代码对应的德语名称提前定义在字典里,这样循环验证更高效,也方便维护。
  • 断言覆盖:不仅验证名称正确性,还要确保返回的国家数量和预期一致,避免遗漏或多返回国家。

如果用的是xUnit框架,你可以用IClassFixture或者在测试方法内部做文化切换和恢复,核心逻辑是一样的哦~

内容的提问来源于stack exchange,提问作者yawor valtchev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:05:53