表題の件で質問させてください
現在単体テストの勉強のために簡単なコードで練習しています
今回使ったサンプルでの条件式は以下です
入力値が負の場合はArgumentExceptionを送出。
入力値が3で割り切れる場合は"Fizz"を返す。
入力値が5で割り切れる場合は"Buzz"を返す。
入力値が3と5の両方で割り切れる場合は"Fizz Buzz"を返す。
入力値が上記以外の場合は、数値の文字列表現を返す。
上記の条件で
・入力値が負の場合はArgumentExceptionを送出。
のテスト部分の記入方法がわかりません
Assert.AreEqualで比較するのかと考えたのですがエラーとなります
例外処理のテストの方法について教えてください
宜しくお願い致します
以下テストクラス
C#
1 2 [TestMethod()] 3 public void EvalTest1() 4 { 5 var target = new FizzBuzzer(); 6 var values = new[] { 3, 12, 99 }; // 3の倍数を入力 7 foreach (var n in values) 8 { 9 var actual = target.Eval(n); 10 Assert.AreEqual("Fizz", actual); 11 } 12 } 13 14 15 [TestMethod()] 16 public void EvalTest2() 17 { 18 var target = new FizzBuzzer(); 19 var values = new[] { 5, 10, 100 }; // 5の倍数を入力 20 foreach (var n in values) 21 { 22 var actual = target.Eval(n); 23 Assert.AreEqual("Buzz", actual); 24 } 25 } 26 27 [TestMethod()] 28 public void EvalTest3() 29 { 30 var target = new FizzBuzzer(); 31 var values = new[] { 15 }; // 3,5の倍数を入力 32 foreach (var n in values) 33 { 34 var actual = target.Eval(n); 35 Assert.AreEqual("Fizz Buzz", actual); 36 } 37 } 38 [TestMethod()] 39 [ExpectedException(typeof(ArgumentException))] 40 public void EvalTest5() 41 { 42 var target = new FizzBuzzer(); 43 var values = new[] { -1 }; 44 foreach (var n in values) 45 { 46 //この部分の処理がわかりません 47 throw new ArgumentException(); 48 } 49 }
処理部分は以下です
C#
1 public string Eval(int n) 2 { 3 4 5 6 if( n < 0 ) 7 { 8 throw new ArgumentException(); 9 10 } 11 12 if ((n % 3 == 0) && (n % 5 == 0)) 13 { 14 return "Fizz Buzz"; 15 } 16 17 if ( n % 3 == 0 ) 18 { 19 return "Fizz"; 20 } 21 22 if( n % 5 == 0) 23 { 24 return "Buzz"; 25 } 26 27 else 28 { 29 return n.ToString(); 30 } 31 32 33 throw new NotImplementedException(); 34 35 }
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/28 07:33