2

mstest フレームワークを使用して単体テスト ケースを作成するのは初めてで、期待値への入力として xml ファイルから改行文字を取得することに行き詰まっています。以下はテスト方法の一部です

public void ExtractNewLineTest()

{
    MathLibraray target = new MathLibraray(); // TODO: Initialize to an appropriate value
    string expected = TestContext.DataRow["ExpectedValue"].ToString(); => I am retrieving the value from the xml file.
    string actual;
    actual = target.ExtractNewLine();
    Assert.AreEqual(expected, actual);
}

以下はxmlコンテンツです

<ExtractNewLineTest>
      <ExpectedValue><![CDATA[select distinct\tCDBREGNO,\r\n\tMOLWEIGHT,\r\n\tMDLNUMBER\r\nfrom Mol]]></ExpectedValue>
 </ExtractNewLineTest>

xml から期待値までのデータを取得すると、文字列を下回ります

ExpectedValue = “select distinct\\tCDBREGNO,\\r\\n\\tMOLWEIGHT,\\r\\n\\tMDLNUMBER\\r\\nfrom Mol”;

上記の値が表示される場合、\n と \r の両方に余分なスラッシュが追加されています。この値をどのように主張できるか教えてください。ありがとう!

4

1 に答える 1

2

XML ファイルに改行が含まれていません。バックスラッシュの後にt,rまたはn. この組み合わせは XML ファイルから忠実に読み取られており、デバッガーは表示時にバックスラッシュをエスケープしています。

XML から読み取った値に「C# 文字列エスケープ」ルールを適用する場合は、それを行うことができますが、そうする必要があることに注意してください。単純化したアプローチは次のようになります。

expectedValue = expectedValue.Replace("\\t", "\t")
                             .Replace("\\n", "\n")
                             .Replace("\\r", "\r")
                             .Replace("\\\\", "\\");

それが間違ったことをする場合があります。たとえば、本物のバックスラッシュの後にt. それはあなたにとって十分かもしれません。そうでない場合は、最初から文字列を読み取り、さまざまなケースを処理する「適切な」置換を作成する必要があります。

于 2012-10-25T12:29:47.180 に答える