2016-08-01 7 views
2

私はこれが初めてだから、これが正しいかどうかは分かりません。私がテストしたい コードは次のとおりです。コンマで区切られたint型の配列をint型に変換するためのユニットテスト

public int[] IntArray(string text) 
{ 
    return text.Split(',').Select(x => int.Parse(x.Trim())).ToArray(); 
} 

私が既に持っているテストは非常に誰かが助けることができる期待して、完全なものではありません。

[TestClass] 
public class ContextHelperTests 
{ 
    public ContextHelper CreateTarget() 
    { 
     var context = new ContextHelper();   
    } 

    return new ContextHelper(); 
} 

[TestMethod] 
public void TestContextHelper() 
{ 
    // Arrange 
    var expectedResult = 12,3; 
} 

// Act 
var values = context.Split(','); 
int actualResult = values.Select(x => int.Parse(x)).ToArray(); 

// Assert 
Assert.That(actualResult, Is.EqualTo(expectedResult)); 
+0

「テストはcpmpleteではありません」とはどういう意味ですか? – HimBromBeere

+1

あなたの質問は何ですか?あなたが表示するユニットテストコードは有効ではありません。 –

+0

私はちょうどコードをテストしたい。私はいくつかの例を見て、上記のテストコードを考え出しました –

答えて

2

あなたはあなたの中にしたくありませんすべてのあなたのソースコードのロジックを複製するテストコード。それは理にかなっていません。代わりに、入力が何であるかを知っているし、あなたの出力はちょうどそれを指定する方法を知っているので - その後、あなたのテストクラスは、これらの線に沿って何かになります

それらが等しいことを確認してください。

[TestClass] 
public class ContextHelperTests 
{ 
    private SomeClassWithThatMethod _instance; 

    private string _inputText = "123 , 324 , 4"; 
    private int[] _expectedOutput = new int[] {123, 324, 4}; 

    [TestInitialize] 
    public void Initialize() 
    { 
     _instance = new SomeClassWithThatMethod(); 
    } 

    [TestMethod] 
    public void IntArray_ValidInput_3ItemsInOutput() 
    { 
     var response = _instance.IntArray(_inputText); 

     CollectionAssert.AreEqual(response, _expectedOutput); 
    } 
} 

をとFluentAssertionsというライブラリをチェックしてください。Assert.の部分をはるかに読みやすくクリーナーにするための素晴らしい拡張メソッド

+0

ありがとうございます。私がAssert.That(actualResult、Is.EqualTo(expectedResult))を使用している場合、または記述したものを使用すると、assertに 'that'の定義が含まれていないというエラーが発生します。 –

+0

@シャンの - ya - 私はちょうどあなたが持っていた主張に対処していましたが、ここでは素早い編集です(まだ私はfluentAssertionが好きですが個人的意見です)。 –

+0

ありがとう、私はこれで作業します。 –

3

あなたがテストを実装する場合、あなたは重複しません。あなたがテストしたいコードですが、あなたはコード全体をテストします

あなたIntArrayメソッドをテストしたい場合たとえば、あなたはそれを呼び出すと、期待どおり、それは働いていることを確認するために、いくつかのアサーションを実行する必要があります。

var expectedResult = new int[] { 1, 2, 3 }; 
var result = whatever.IntArray("1,2,3"); 

Assert.AreEqual(3, result.Length); 
Assert.AreEqual(expectedResult[0], result[0]); 
Assert.AreEqual(expectedResult[1], result[1]); 
Assert.AreEqual(expectedResult[2], result[2]); 
関連する問題