你好,我試圖在我的排序中進行測驗
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;
}
}
這是我的單元測驗
namespace Sort_Test
{
[TestClass]
public class Sort
{
[TestMethod]
public void MergeSortTesting()
{
Sort sort = new Sort();
string input = "dcba";
string output = sort.MergeSort(input);
Assert.AreEqual("abcd", output);
}
private string MergeSort(string input)
{
return input;
}
}
}
但它沒有用,我可能知道它不起作用的原因是什么。對不起 C# 初學者。請幫助我代碼有什么問題?我還嘗試搜索如何進行單元測驗作業的解決方案,但我無法得到預期結果是 abcd 但在測驗 dcba 中的解決方案。

uj5u.com熱心網友回復:
首先,讓我們稍微清理一下類,洗掉不需要的代碼。代碼越少,以后需要閱讀和理解的代碼就越少。在這種情況下,您根本不需要類。好吧,C# 是一種 OOP 語言,迫使您違反原則將所有代碼放在一個類中,但它沒有狀態可以保存,因此它可以是一個靜態類。靜態類不需要實體化,稍后您將看到。此外,從字串中獲取字符陣列并將字符陣列轉換為字串也不是您必須手動完成的事情。當你洗掉所有這些東西時,你的演算法變得更加清晰和簡潔。我記得合并排序不同,但我猜這取決于你來弄清楚。
public static class SortAlgorithms
{
public static string MergeSort(string word)
{
var listLetters = word.ToArray();
for (int i = 0; i < listLetters.Length; i )
{
for (int j = i; j < listLetters.Length; j )
{
if (listLetters[i] > listLetters[j])
{
var tempLetter = listLetters[i];
listLetters[i] = listLetters[j];
listLetters[j] = tempLetter;
}
}
}
return new string(listLetters);
}
}
現在開始測驗:由于我們將測驗類重命名為不再與您的實際類沖突,并將輸出從 int 更改為 string,它實際上會編譯。您也不再需要創建和初始化物件的這種繞道而行。
[TestClass]
public class SortAlgorithmTests
{
[TestMethod]
public void MergeSortTesting()
{
var input = "dcba";
var output = SortAlgorithms.MergeSort(input);
Assert.AreEqual("abcd", output);
}
}
uj5u.com熱心網友回復:
因為你沒有初始化Word
,所以單元測驗類必須和主類有不同的名字Sort。并且不要忘記[TestMethod]在單元測驗類中的每個方法。
嘗試這個:
public class Sort
{
public string Word { get; set; }
public Sort(string word)
{
Word = word;
}
public string MergeSort()
{
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;
}
}
然后在您的單元測驗中:
[TestClass]
public class SortTests
{
[TestMethod]
public void MergeSortTesting()
{
var sort = new Sort("dcba");
int result = sort.MergeSort();
Assert.AreEqual("abcd", result);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/342846.html
