私はテストケースを行っていますが、私は今この関数をテストする方法はありません。あなたは私にいくつかのアイデアを教えていただけますか?私はMockitoを使用しようとしていたが、私はヌルになる。私はあなたの助けに感謝します。Androidテスト - どのようにこの機能をテストできますか?
これはテストしたい機能です。
public static Date optDate(JSONObject json, String key) {
if(!json.isNull(key)) {
try {
DateTime dt = JSONUtils.dateFormatter.withZoneUTC().parseDateTime(json.optString(key));
Date date = dt.toDate();
return date;
} catch(Exception e) {
}
}
return null;
}
そして、私はこのようにテストしています。
@RunWith(MockitoJUnitRunner.class)
public class JSONUtilsTest {
static String dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'";
static DateTimeFormatter dateFormatter = DateTimeFormat.forPattern(dateFormat);
DateTime dt = JSONUtilsTest.dateFormatter.withZoneUTC().parseDateTime("2011-11-02T02:50:12.208Z");
Date date = dt.toDate();
@Mock
JSONObject JSONMock = Mockito.mock(JSONObject.class);
JSONUtils mJSONUtils = Mockito.mock(JSONUtils.class);
@Before
public void setup() {
doReturn(date).when(mJSONUtils).optDate(JSONMock,"possessionDate");
}
@Test
public void optDateShouldReturnValueOnValidString() {
Date result = JSONUtils.optDate(JSONMock, "possessionDate");
Assert.assertEquals("2011-11-02",result);
}
}
***************************** EDIT 1 ************ ************************
このメソッドをテストする正しい方法を見つけようとした後。これは私がしました。
@RunWith(MockitoJUnitRunner.class)
public class JSONUtilsTest {
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
Date today = new Date();
String todayString = dateFormat.format(today);
@Mock
JSONObject JSONMock = Mockito.mock(JSONObject.class);
@Before
public void setup() {
when(JSONUtils.optString(JSONMock, "possessionDate")).thenReturn(todayString);
}
@Test
public void optDateShouldReturnValueOnValidString() {
Date result = JSONUtils.optDate(JSONMock, "possessionDate");
Assert.assertEquals(today,result);
}
私が間違っていない限り、ここで制御する必要があるのは 'json'オブジェクトだけです。意味:あなたが 'isNull()'と 'optString()'の2つのメソッド呼び出しが、テスト中のメソッドに提供するオブジェクトに対して呼び出されたかどうかを調べることができます。 – GhostCat
@Jägermeisterどのようにすることができますか?そのメソッドが正しい値を返しているかどうかをテストしようとしていました。このようにして 'opString()'をテストしてみましょう:@Before public void setup(){ when(JSONUtils.optString(JSONMock、 "name"))。thenReturn( "Daniel"); when(JSONUtils.optString(JSONMock、 "city"))。then返される(null); when(JSONUtils.optString(JSONMock、 "lastname"))。then return( ""); } @Test公共ボイドoptStringShouldReturnValidStringOnName(){ 文字列結果= JSONUtils.optString(JSONMock、 "名")。 Assert.assertEquals( "Daniel"、result); } –
2つの呼び出しを必要とし、返したいものを返すモックを作成しますか?あなたのセットアップ方法のように? – GhostCat