コードによる自動テストを作成する場合、テストコードのロジックは共通であっても入力データが異なることがあります
こういった場合は下記のように冗長にメソッドを分けて作ることが多いと思います
[TestClass] public class UnitTest1 { [TestMethod] public void TestMethod1() { try { string target = default(string); Debug.WriteLine(target.ToString()); } catch (Exception) { Assert.Fail(); } } [TestMethod] public void TestMethod2() { try { string target = null; Debug.WriteLine(target.ToString()); } catch (Exception) { Assert.Fail(); } } [TestMethod] public void TestMethod3() { try { string target = ""; Debug.WriteLine(target.ToString()); } catch (Exception) { Assert.Fail(); } } }
実はストアアプリの場合、上記のコードは下記のように書き換えることができます
[TestClass] public class UnitTest1 { [TestMethod] [DataTestMethod] [DataRow(default(string), DisplayName = "default-test")] [DataRow(null, DisplayName = "null-test")] [DataRow("", DisplayName = "empty-test")] public void TestMethod1(string param1) { try { Debug.WriteLine(param1.ToString()); } catch (Exception) { Assert.Fail(); } } }
このように書いた場合でも、テスト結果でも次のように表示され区別できるので便利です