ビジネスロジックに使用されているJavaクラス用のJUnitテストケースを記述し、AEMと対話する必要があります。私はJUnitのテストケースを書くための適切な文書を見つけられません。そのような文書があれば、私に知らせてください。AEM6.2でJavaクラスのJunitテストケースを書く方法
-2
A
答えて
0
ここであなたが探しているものがわかりません。 AEMクラスのJunitテストケースは、Javaクラスの記述と同じです。必要に応じて、Slingオブジェクトをモックするための模擬フレームワークが必要な場合があります。
OSGIとスリングクラスのモックの周りの詳細はhere
のサンプルコードサンプルWCMUsePojoクラスでapacheのスリングサイトhereに説明されている - Mockitoを使ってユニットテストに
public class DisplayAsDataSourceWcmUse extends WCMUsePojo {
/**
* Display as script regex.
*/
private static final String DISPLAY_AS_REGEX_EXPR = "^displayAs\\_(.*)\\.html$";
/**
* Datasource to the display listing.
*/
private DataSource dataSource;
/**
* activate method.
*
* @throws Exception
*/
@SuppressWarnings("PMD.SignatureDeclareThrowsException")
@Override
public final void activate() throws Exception {
this.buildDisplayAsOptions();
}
/**
* Build the list of views for the DisplayAs Option.
*/
private void buildDisplayAsOptions() {
final SlingHttpServletRequest request = getRequest();
final Resource componentResource = getCurrentComponent();
List<Resource> resourceList = Collections.emptyList();
if (null != componentResource) {
final Iterable<Resource> children =() -> componentResource.listChildren();
final Stream<Resource> childResourceStream = StreamSupport.stream(children.spliterator(), false);
resourceList = childResourceStream
.filter(resource -> resource
.getName().matches(DISPLAY_AS_REGEX_EXPR))
.map(this::getMappedResource)
.collect(Collectors.toList());
childResourceStream.close();
}
if (resourceList.isEmpty()) {
dataSource = EmptyDataSource.instance();
} else {
dataSource = new SimpleDataSource(resourceList.iterator());
}
// place it in request for consumption by datasource mechanism
request.setAttribute(DataSource.class.getName(), dataSource);
}
/**
* Get resource instance of current component i.e. resource with path to component under apps/.
*
* @return component resource.
*/
private Resource getCurrentComponent() {
final Resource listResource = getResourceResolver().getResource((String) getRequest().getAttribute(Value
.CONTENTPATH_ATTRIBUTE));
if (listResource != null) {
return getResourceResolver().getResource(listResource.getResourceType());
}
return null;
}
/**
* Get Mapped Synthetic resource corresponding to the Display View.
*
* @param resource - Resource instance of display script.
* @return ValueMapResource transformation of display script.
*/
@SuppressWarnings("unused")
private ValueMapResource getMappedResource(final Resource resource) {
final String value = resource.getName().replaceFirst(DISPLAY_AS_REGEX_EXPR, "$1");
// see if there's a better label
final String text = ResourceUtil.getValueMap(resource).get(JcrConstants.JCR_TITLE, value);
// create a ValueMap
final Map<String, Object> map = new HashMap();
map.put("text", text);
map.put("value", value);
// return a synthetic resource
return new ValueMapResource(getResourceResolver(), new ResourceMetadata(), "", new ValueMapDecorator(map));
}
/**
* Getter for dataSource.
*
* @return Datasource.
*/
public final DataSource getDataSource() {
return dataSource;
}
}
可能な方法の1つ(あまり理想的ではありませんが、そのような場合は統合テストが最適です) -
@RunWith(MockitoJUnitRunner.class)
public class DisplayAsDataSourceWcmUseTest {
@Mock
private Bindings bindings;
@Mock
private Resource currentResource;
@Mock
private Resource componentResource;
@Mock
private ResourceResolver resourceResolver;
@Mock
private SlingHttpServletRequest request;
@Mock
private Iterator<Resource> childItr;
@Mock
private Resource displayAsOne;
@Mock
private Resource displayAsTwo;
@InjectMocks
private DisplayAsDataSourceWcmUse displayAsDataSourceWcmUse;
@Before
public void setup() {
when(bindings.get("resource")).thenReturn(currentResource);
when(bindings.get("request")).thenReturn(request);
when(request.getResourceResolver()).thenReturn(resourceResolver);
when(request.getAttribute(Value.CONTENTPATH_ATTRIBUTE)).thenReturn("list/component/instance");
when(currentResource.getResourceType()).thenReturn("current/resource/type");
when(resourceResolver.getResource("current/resource/type")).thenReturn(componentResource);
when(resourceResolver.getResource("list/component/instance")).thenReturn(currentResource);
List<Resource> childRes = new ArrayList<>();
childRes.add(displayAsOne);
childRes.add(displayAsTwo);
when(componentResource.listChildren()).thenReturn(childRes.iterator());
when(displayAsOne.getName()).thenReturn("displayAs_One.html");
when(displayAsTwo.getName()).thenReturn("displayAs_Two.html");
Map<String, Object> vm1 = new HashMap();
vm1.put(JcrConstants.JCR_TITLE, "Display Type One");
when(displayAsOne.getValueMap()).thenReturn(new ValueMapDecorator(vm1));
when(displayAsTwo.getValueMap()).thenReturn(new ValueMapDecorator(new HashMap()));
}
@Test
public void test_display_option_are_set() throws Exception{
displayAsDataSourceWcmUse = new DisplayAsDataSourceWcmUse();
displayAsDataSourceWcmUse.init(bindings);
assertTrue(displayAsDataSourceWcmUse.getDataSource() instanceof SimpleDataSource);
}
@Test
public void test_empty_datasource_is_set() throws Exception{
List<Resource> childRes = new ArrayList<>();
when(componentResource.listChildren()).thenReturn(childRes.iterator());
displayAsDataSourceWcmUse = new DisplayAsDataSourceWcmUse();
displayAsDataSourceWcmUse.init(bindings);
assertTrue(displayAsDataSourceWcmUse.getDataSource() instanceof EmptyDataSource);
}
}
0
'ContiPerf 2'をご覧ください。
ContiPerfは、JUnit 4テストケースをパフォーマンステストとして簡単に活用できるようにする軽量テストユーティリティです。継続的なパフォーマンステストのために。これは、注釈付きのJUnit 4の簡単なテスト構成でパフォーマンステストのためのユニットテストを包むのJUnitPerfのアイデアに触発されていますが、より強力かつ簡単に使用する:
- テスト実行characterisiticsと性能要件を定義するためのJavaアノテーションを使用しました。
- テストにマークを付けると、特定の回数実行したり、一定の時間繰り返し実行したりすることができます。
- パフォーマンス要件は、最大、平均、中または任意のパーセンタイルの実行時間にすることができます。
- 性能要件の完璧な制御と読みやすさ簡単な単体テストまたはパフォーマンステストとして2つの異なるモードでテストを実行できます。
- EclipseとMavenとの容易な統合。
- 実行要約をCSVファイルにエクスポートします。
- 外部依存関係のない小さなライブラリ(JUnitのみ)。
- カスタム統計情報の評価と追跡のメカニズムを備えた簡単な拡張機能。
関連する問題
- 1. バネでRow Mapperクラスのjunitテストケースを書く方法
- 2. IOExceptionのjunitテストケースを書く方法
- 3. Javaプログラムで外部テストケース(クラス、junit)を実行する方法は?
- 4. Munitで負のテストケースを書く方法
- 5. junitテストケースのテストケース
- 6. エクセルシートでetlテストケースを書く方法
- 7. SpringブートサービスのJUnitテストケースを書くautowiredコンポーネントを持つアプリケーション
- 8. junit mokitoテストケースの記述方法
- 9. Junitテストケース
- 10. Junitテストケースを使用したJavaプロジェクト
- 11. JUnitのLog4jテストケース
- 12. ラッパークラスのJunitテストケース
- 13. セレニティのJUnitテストケース
- 14. 内部メソッドのjunitテストケースの書き方は?
- 15. AndroidのJUnitのテストケース
- 16. SBTはJavaファイルで書かれたjunitテストケースを再調整しません
- 17. WebサービスのJUnitテストケース
- 18. JUNIT voidメソッドのテストケース
- 19. PreparedStatementCallbackカバレッジのJunitテストケース
- 20. エンティティマネージャ用のJunitテストケース
- 21. munit ..で負のシナリオ(例外シナリオ)のテストケースを書く方法
- 22. JunitテストケースのJcrPackageManagerでapiをアセンブルする方法
- 23. JPA REST APIにjunitを使用してテストケースを書き込む方法は?
- 24. ジャスミンテストで[オブジェクトNodeList]のテストケースを書く方法は?
- 25. laravel 5.4でセッション変数の単体テストケースを書く方法。
- 26. 他のJavaクラスで使用されるjunitクラスの永続XMLファイルを上書きする方法は?
- 27. コマンドラインでJUnitテストとしてjavaクラスを実行する方法
- 28. junitとmockitoを使ってprivate voidメソッドのテストケースを書くには
- 29. RestTemplate用のSpringブートでJUnitテストを書く方法
- 30. このメソッドのrspecを使ってテストケースを書く方法
このリンクを確認してください。初心者には非常に便利です:http://www.wemblog.com/2016/12/how-to-write-tests-in-aem.html –