私は...ユニットテストの初心者のようなものです。
ユニットテストのベストプラクティスをいくつか読みました。単体テストは、アプリケーションを破壊するコードに加えられた変更を防ぐことを目的としていることを理解してください。また、すべてのオブジェクトのパブリックAPI(getter、メソッド)でテストケースを作成して、オブジェクトの動作をテストし、期待どおりかどうかを確認します。
だから今..私はテストする必要がある少し簡単なクラスがあります:
public class Foo{
private readonly string _text;
public Foo(string initialText)
{
this._text = initialText;
}
public string Text {get;}
//Some other methods that will use this Text property to parsing, comparasion etc
public string RichTextFormat {....}
}
ここでは、これはコメントのように、このTextプロパティは、解析、比較などのために多くの場所を使用しています。
したがって、 Textプロパティがコンストラクター内で渡したものを正確に返すようにすることが非常に重要だと思います。
これが私が書いたテストケースです...
[TestMethod]
public void Text_WhenInitialTextIsNull()
{
string initalizeText = null;
Foo realFoo = new Foo(initalizeText);
Assert.AreEqual(initalizeText, realFoo.Text);
}
[TestMethod]
public void Text_WhenInitialTextIsEmpty()
{
string initalizeText = string.Empty;
Foo realFoo = new Foo(initalizeText);
Assert.AreEqual(initalizeText, realFoo.Text);
}
[TestMethod]
public void Text_WhenInitialTextIsOneLetter()
{
string initalizeText = "A";
Foo realFoo = new Foo(initalizeText);
Assert.AreEqual(initalizeText, realFoo.Text);
}
[TestMethod]
public void Text_WhenInitialTextIsOneSpecialCharacter()
{
string initalizeText = "!";
Foo realFoo = new Foo(initalizeText);
Assert.AreEqual(initalizeText, realFoo.Text);
}
[TestMethod]
public void Text_WhenInitialTextIsOneSentense()
{
string initalizeText = "Hello, World!";
Foo realFoo = new Foo(initalizeText);
Assert.AreEqual(initalizeText, realFoo.Text);
}
[TestMethod]
public void Text_WhenInitialTextIsOneParagraph()
{
string initalizeText = "Who's the Smartphone Winner? " + System.Environment.NewLine +
" On the smartphone front, however, iSuppli put Apple at number one," +
" while Strategy Analytics pointed to Samsung. " + System.Environment.NewLine +
" According to iSuppli, Apple shipped 35 million smartphones in the first quarter" +
" to Samsung's 32 million. Strategy Analytics, however, said Samsung's total was" +
" 44.5 million to Apple's 35.1 million. Nokia landed at number three on both lists" +
" with 12 percent market share. ";
Foo realFoo = new Foo(initalizeText);
Assert.AreEqual(initalizeText, realFoo.Text);
}
これは…重すぎるのかな?