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

C#中MergeSort排序方法单元测试结果不符合预期如何排查解决

问题根因

你单元测试项目中定义了同名的Sort类,测试方法实例化的是测试项目本地的Sort类,调用的是该类下直接返回原输入的私有MergeSort方法,完全没有调用你实现了排序逻辑的业务类,因此返回值永远和输入一致。

修复步骤

  1. 给实现排序逻辑的业务类加上独立命名空间,避免类名冲突:
namespace SortCore
{
    public class Sort
    {
        public string MergeSort(string Word)
        {
            var tempLetter = "";
            string arrangedSort = "";
            List<string> ListLetters = new List<string>();
            arrangedSort = "";
            for (int i = 0; i < Word.Length; i++)
            {
                ListLetters.Add(Word.Substring(i, 1));
            }
            for (int i = 0; i < Word.Length; i++)
            {
                for (int j = i; j < Word.Length; j++)
                {
                    if (char.Parse(ListLetters[i]) > char.Parse(ListLetters[j]))
                    {
                        tempLetter = ListLetters[i];
                        ListLetters[i] = ListLetters[j];
                        ListLetters[j] = tempLetter;
                    }
                }
            }
            foreach (var listLetter in ListLetters)
            {
                arrangedSort += listLetter;
            }
            return arrangedSort;
        }
    }
}
  1. 单元测试项目先引用业务项目,再修改测试代码:删除测试类中冗余的MergeSort方法,明确指定调用业务类的排序方法:
namespace Sort_Test
{
    [TestClass]
    public class SortTest
    {
        [TestMethod]
        public void MergeSortTesting()
        {
            // 明确调用业务项目的Sort类
            SortCore.Sort sort = new SortCore.Sort();
            string input = "dcba";
            string output = sort.MergeSort(input);
            Assert.AreEqual("abcd", output);
        }
    }
}

可选优化

你当前实现的排序逻辑是选择排序,并非归并排序,建议修改方法名避免歧义;也可以直接操作char数组简化代码:

public string SelectSort(string input)
{
    char[] chars = input.ToCharArray();
    for (int i = 0; i < chars.Length; i++)
    {
        for (int j = i; j < chars.Length; j++)
        {
            if (chars[i] > chars[j])
            {
                char temp = chars[i];
                chars[i] = chars[j];
                chars[j] = temp;
            }
        }
    }
    return new string(chars);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 07:48:03