質問編集履歴

8

fix title

2020/04/26 14:05

投稿

cats-eye
cats-eye

スコア1

test CHANGED
File without changes
test CHANGED
@@ -14,15 +14,13 @@
14
14
 
15
15
  類似した質問は下記Stackoverflowで確認しているものの、答えが出ておらず解決できていない状況となります。
16
16
 
17
- Easier DynamoDB local testing
18
-
19
- https://stackoverflow.com/questions/26901613/easier-dynamodb-local-testing
17
+ [a Easier DynamoDB local testing](https://stackoverflow.com/questions/26901613/easier-dynamodb-local-testing)
20
-
21
-
22
-
23
- 実装例としては以下のようなものとなります。
18
+
24
-
19
+
20
+
25
- https://github.com/awslabs/dynamodb-lock-client/blob/master/src/test/java/com/amazonaws/services/dynamodbv2/AmazonDynamoDBLockClientTest.java
21
+ [実装例](https://github.com/awslabs/dynamodb-lock-client/blob/master/src/test/java/com/amazonaws/services/dynamodbv2/AmazonDynamoDBLockClientTest.java)としては以下のようなものとなります。
22
+
23
+
26
24
 
27
25
 
28
26
 

7

fix overview

2020/04/26 14:05

投稿

cats-eye
cats-eye

スコア1

test CHANGED
File without changes
test CHANGED
@@ -20,6 +20,12 @@
20
20
 
21
21
 
22
22
 
23
+ 実装例としては以下のようなものとなります。
24
+
25
+ https://github.com/awslabs/dynamodb-lock-client/blob/master/src/test/java/com/amazonaws/services/dynamodbv2/AmazonDynamoDBLockClientTest.java
26
+
27
+
28
+
23
29
 
24
30
 
25
31
  ### 発生している問題・エラーメッセージ

6

fix overview

2020/04/26 12:56

投稿

cats-eye
cats-eye

スコア1

test CHANGED
File without changes
test CHANGED
@@ -6,9 +6,9 @@
6
6
 
7
7
 
8
8
 
9
- ローカルDynamoDBによるテストではなく、DynamoDB-mockのようにMockを使った実装をしたいと考えています。
9
+ ローカルDynamoDBによるテストではなく、Mockを使った実装をしたいと考えています。
10
-
11
- https://ddbmock.readthedocs.io/en/latest/pages/getting_started.html#using-ddbmock-for-tests
10
+
11
+
12
12
 
13
13
 
14
14
 

5

fix overview

2020/04/26 12:53

投稿

cats-eye
cats-eye

スコア1

test CHANGED
File without changes
test CHANGED
@@ -6,6 +6,22 @@
6
6
 
7
7
 
8
8
 
9
+ ローカルDynamoDBによるテストではなく、DynamoDB-mockのようにMockを使った実装をしたいと考えています。
10
+
11
+ https://ddbmock.readthedocs.io/en/latest/pages/getting_started.html#using-ddbmock-for-tests
12
+
13
+
14
+
15
+ 類似した質問は下記Stackoverflowで確認しているものの、答えが出ておらず解決できていない状況となります。
16
+
17
+ Easier DynamoDB local testing
18
+
19
+ https://stackoverflow.com/questions/26901613/easier-dynamodb-local-testing
20
+
21
+
22
+
23
+
24
+
9
25
  ### 発生している問題・エラーメッセージ
10
26
 
11
27
 
@@ -393,19 +409,3 @@
393
409
  </dependency>
394
410
 
395
411
  ```
396
-
397
-
398
-
399
-
400
-
401
- ローカルDynamoDBによるテストではなく、DynamoDB-mockのようにMockを使った実装をしたいと考えています。
402
-
403
- https://ddbmock.readthedocs.io/en/latest/pages/getting_started.html#using-ddbmock-for-tests
404
-
405
-
406
-
407
- 類似した質問は下記Stackoverflowで確認しているものの、答えが出ておらず解決できていない状況となります。
408
-
409
- Easier DynamoDB local testing
410
-
411
- https://stackoverflow.com/questions/26901613/easier-dynamodb-local-testing

4

add background

2020/04/26 12:41

投稿

cats-eye
cats-eye

スコア1

test CHANGED
File without changes
test CHANGED
@@ -393,3 +393,19 @@
393
393
  </dependency>
394
394
 
395
395
  ```
396
+
397
+
398
+
399
+
400
+
401
+ ローカルDynamoDBによるテストではなく、DynamoDB-mockのようにMockを使った実装をしたいと考えています。
402
+
403
+ https://ddbmock.readthedocs.io/en/latest/pages/getting_started.html#using-ddbmock-for-tests
404
+
405
+
406
+
407
+ 類似した質問は下記Stackoverflowで確認しているものの、答えが出ておらず解決できていない状況となります。
408
+
409
+ Easier DynamoDB local testing
410
+
411
+ https://stackoverflow.com/questions/26901613/easier-dynamodb-local-testing

3

fix title

2020/04/26 12:31

投稿

cats-eye
cats-eye

スコア1

test CHANGED
@@ -1 +1 @@
1
- fixJUnitでMockitoによるDynamoDBのstubを作成してもjava.lang.NullPointerExceptionが発生するのですが、テストを通す方法について
1
+ JUnitでMockitoによるDynamoDBのstubを作成してもjava.lang.NullPointerExceptionが発生テストを通す方法について
test CHANGED
File without changes

2

fix code

2020/04/26 10:28

投稿

cats-eye
cats-eye

スコア1

test CHANGED
@@ -1 +1 @@
1
- JUnitでMockitoによるDynamoDBのstubを作成してもjava.lang.NullPointerExceptionが発生するのですが、テストを通す方法について
1
+ fixJUnitでMockitoによるDynamoDBのstubを作成してもjava.lang.NullPointerExceptionが発生するのですが、テストを通す方法について
test CHANGED
@@ -228,17 +228,31 @@
228
228
 
229
229
  final static String valCol = "meaning";
230
230
 
231
-
231
+ String testKey;
232
+
232
-
233
+ String testValue;
234
+
235
+
236
+
237
+
238
+
239
+
240
+
233
- @InjectMocks
241
+ @InjectMocks
234
-
242
+
235
- private MyDic mydic;
243
+ private MyDic mydic;
236
-
237
-
238
-
244
+
245
+
246
+
239
- @Mock(answer = Answers.RETURNS_DEEP_STUBS) DynamoDbClient ddb;
247
+ @Mock(answer = Answers.RETURNS_DEEP_STUBS)
248
+
240
-
249
+ private DynamoDbClient ddb;
250
+
241
- @Mock(answer = Answers.RETURNS_DEEP_STUBS) Map<String,AttributeValue> map;
251
+ @Mock(answer = Answers.RETURNS_DEEP_STUBS)
252
+
253
+ private Map<String,AttributeValue> map;
254
+
255
+
242
256
 
243
257
 
244
258
 
@@ -246,61 +260,75 @@
246
260
 
247
261
  public void setUp() throws Exception {
248
262
 
263
+ byte[] array = new byte[7];
264
+
265
+ new Random().nextBytes(array);
266
+
267
+ String generatedString = new String(array, Charset.forName("UTF-8"));
268
+
269
+ testKey = "foo" + generatedString;
270
+
271
+ testValue = "bar" + generatedString;
272
+
273
+
274
+
249
- MockitoAnnotations.initMocks(this);
275
+ MockitoAnnotations.initMocks(this);
250
276
 
251
277
  }
252
278
 
253
279
 
254
280
 
281
+
282
+
255
- @Test
283
+ @Test
256
-
284
+
257
- public void testGetSpecifiedWords() {
285
+ public void testGetSpecifiedWords() {
258
-
286
+
259
- MyDic m = new MyDic();
287
+ MyDic m = new MyDic();
260
-
288
+
261
- Word word = m.new Word("foo3");
289
+ Word word = m.new Word("foo3");
262
-
290
+
263
- List<Word> dic = new ArrayList<Word>();
291
+ List<Word> dic = new ArrayList<Word>();
264
-
292
+
265
- dic.add(word);
293
+ dic.add(word);
266
-
267
-
268
-
294
+
295
+
296
+
269
- Map<String,AttributeValue> keyToGet = new HashMap<String,AttributeValue>();
297
+ Map<String,AttributeValue> keyToGet = new HashMap<String,AttributeValue>();
270
-
298
+
271
- keyToGet.put(keyCol, AttributeValue.builder()
299
+ keyToGet.put(keyCol, AttributeValue.builder()
272
-
300
+
273
- .s("foo3").build());
301
+ .s("foo3").build());
274
-
302
+
275
- GetItemRequest request = GetItemRequest.builder()
303
+ GetItemRequest request = GetItemRequest.builder()
276
-
304
+
277
- .key(keyToGet)
305
+ .key(keyToGet)
278
-
306
+
279
- .tableName(tableName)
307
+ .tableName(tableName)
280
-
308
+
281
- .build();
309
+ .build();
282
-
283
-
284
-
310
+
311
+
312
+
285
- Mockito.when(ddb.getItem(request).item()).thenReturn(map);
313
+ Mockito.when(ddb.getItem(request).item()).thenReturn(map);
286
-
314
+
287
- Mockito.when(map.keySet().isEmpty()).thenReturn(false);
315
+ Mockito.when(map.keySet().isEmpty()).thenReturn(false);
288
-
316
+
289
- Mockito.when(map.get(keyCol).s()).thenReturn("foo3");
317
+ Mockito.when(map.get(keyCol).s()).thenReturn("foo3");
290
-
318
+
291
- Mockito.when(map.get(valCol).s()).thenReturn("bar3");
319
+ Mockito.when(map.get(valCol).s()).thenReturn("bar3");
292
-
293
-
294
-
320
+
321
+
322
+
295
- List<Word> ans = mydic.getSpecifiedWords(dic);
323
+ List<Word> ans = mydic.getSpecifiedWords(dic);
296
-
324
+
297
- List<Word> target = new ArrayList<Word>(Arrays.asList(m.new Word("foo3", "bar3")));
325
+ List<Word> target = new ArrayList<Word>(Arrays.asList(m.new Word("foo3", "bar3")));
298
-
299
-
300
-
326
+
327
+
328
+
301
- assertTrue(ans.get(0).equals(target.get(0)));
329
+ assertTrue(ans.get(0).equals(target.get(0)));
302
-
330
+
303
- }
331
+ }
304
332
 
305
333
  }
306
334
 

1

fix code

2020/04/26 10:24

投稿

cats-eye
cats-eye

スコア1

test CHANGED
File without changes
test CHANGED
@@ -252,55 +252,55 @@
252
252
 
253
253
 
254
254
 
255
- @Test
255
+ @Test
256
-
256
+
257
- public void testGetSpecifiedWords() {
257
+ public void testGetSpecifiedWords() {
258
-
258
+
259
- MyDic m = new MyDic();
259
+ MyDic m = new MyDic();
260
-
260
+
261
- Word word = m.new Word("foo3");
261
+ Word word = m.new Word("foo3");
262
-
262
+
263
- List<Word> dic = new ArrayList<Word>();
263
+ List<Word> dic = new ArrayList<Word>();
264
-
264
+
265
- dic.add(word);
265
+ dic.add(word);
266
-
267
-
268
-
266
+
267
+
268
+
269
- Map<String,AttributeValue> keyToGet = new HashMap<String,AttributeValue>();
269
+ Map<String,AttributeValue> keyToGet = new HashMap<String,AttributeValue>();
270
-
270
+
271
- keyToGet.put(keyCol, AttributeValue.builder()
271
+ keyToGet.put(keyCol, AttributeValue.builder()
272
-
272
+
273
- .s("foo3").build());
273
+ .s("foo3").build());
274
-
274
+
275
- GetItemRequest request = GetItemRequest.builder()
275
+ GetItemRequest request = GetItemRequest.builder()
276
-
276
+
277
- .key(keyToGet)
277
+ .key(keyToGet)
278
-
278
+
279
- .tableName(tableName)
279
+ .tableName(tableName)
280
-
280
+
281
- .build();
281
+ .build();
282
-
283
-
284
-
282
+
283
+
284
+
285
- Mockito.when(ddb.getItem(request).item()).thenReturn(map);
285
+ Mockito.when(ddb.getItem(request).item()).thenReturn(map);
286
-
286
+
287
- Mockito.when(map.keySet().isEmpty()).thenReturn(false);
287
+ Mockito.when(map.keySet().isEmpty()).thenReturn(false);
288
-
288
+
289
- Mockito.when(map.get(keyCol).s()).thenReturn("foo3");
289
+ Mockito.when(map.get(keyCol).s()).thenReturn("foo3");
290
-
290
+
291
- Mockito.when(map.get(valCol).s()).thenReturn("bar3");
291
+ Mockito.when(map.get(valCol).s()).thenReturn("bar3");
292
-
293
-
294
-
292
+
293
+
294
+
295
- List<Word> ans = m.getSpecifiedWords(dic);
295
+ List<Word> ans = mydic.getSpecifiedWords(dic);
296
-
296
+
297
- List<Word> target = new ArrayList<Word>(Arrays.asList(m.new Word("foo3", "bar3")));
297
+ List<Word> target = new ArrayList<Word>(Arrays.asList(m.new Word("foo3", "bar3")));
298
-
299
-
300
-
298
+
299
+
300
+
301
- assertThat(ans.get(0), is(target.get(0)));
301
+ assertTrue(ans.get(0).equals(target.get(0)));
302
-
302
+
303
- }
303
+ }
304
304
 
305
305
  }
306
306