mockito-kotlin、kotestを用いたテスト環境で、モックオブジェクトから検査例外をスローしたいと考えています。
production
1open class Calc { 2 3 open fun plus(a: Int, b: Int): Int { 4 5 if (a < 0 || b < 0) { 6 throw MyException1("number should be positive") 7 } 8 if (a > 99 || b > 99) { 9 throw MyException2("number should be less 100") 10 } 11 12 return a + b 13 } 14 15} 16 17class MyException1(message : String): Exception(message) 18class MyException2(message : String): Exception(message)
test
1class CalcTest : StringSpec({ 2 3 "test" { 4 val mock: Calc = mock() 5 //これがしたいが・・できない? 6 Mockito.`when`(mock.plus(5,5)) doThrow MyException1("error!") 7 8 shouldThrow<MyException1> { 9 mock.plus(5,5) 10 } 11 } 12}) 13
errorMessage
1Test failed 2org.mockito.exceptions.base.MockitoException: 3Checked exception is invalid for this method! 4Invalid: MyException1: error! 5・・・以下略
この回答やこの回答を見る限り、Exception
ではなくRuntimeException
とするか、Javaでいうthrows
に指定している検査例外でないとdoThrow
では扱えないようなのですが、やはりできないでしょうか。
なお、plus
メソッドにthrows
アノテーションをつけることも考えたのですが、テスト実行のためにプロダクションコードに手を加えるのも微妙とのことで、何か他の手がないものかと模索しています。
何かわかることがあればお教えいただけると幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。