アプリケーションをユニットテストするためにMockitoを学ぶのに苦労しています。以下は、現在テストしようとしているメソッドの例です。
public boolean validateFormula(String formula) {
boolean validFormula = true;
double result = 0;
try {
result = methodThatCalculatAFormula(formula, 10, 10);
} catch (Exception e) {
validFormula = false;
}
if (result == 0)
validFormula = false;
return validFormula;
}
このメソッドは、同じクラスの別のメソッドを呼び出します。methodThatCalculatAFormula
これは、単体テストのときに呼び出したくありませんvalidateFormula
。
これをテストするために、何が返されるかに応じてこのメソッドがどのように動作するかを確認したいと思いmethodThatCalculatAFormula
ます。false
が0の場合に返されresult
、0以外の数値の場合は有効が返されるため、実際のメソッドを実行せずにこれらの戻り値をシミュレートしたいと思いmethodThatCalculatAFormula
ます。
私は次のように書いています:
public class FormlaServiceImplTest {
@Mock
FormulaService formulaService;
@Before
public void beforeTest() {
MockitoAnnotations.initMocks(this);
}
@Test
public void testValidateFormula() {
`//Valid since methodThatCalculatAFormula returns 3`
when(formulaService.methodThatCalculatAFormula(anyString(),anyDouble(),anyDouble(),anyBoolean())).thenReturn((double)3);
assertTrue(formulaService.validateFormula("Valid"));
//Not valid since methodThatCalculatAFormula returns 0
when(formulaService.methodThatCalculatAFormula(anyString(),anyDouble(),anyDouble(),anyBoolean())).thenReturn((double)0);
assertFalse(formulaService.validateFormula("Not Valid"));
}
ただし、上記のコードを実行すると、assertTrue
はfalse
です。模擬設定で何か間違ったことをしたと思います。methodThatCalculatAFormula
実際に呼び出さずにの戻り値をシミュレートして、上記のメソッドをどのようにテストしますか。