[ https://issues.apache.org/jira/browse/SLING-5352?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15050933#comment-15050933 ]
Thierry Ygé commented on SLING-5352: ------------------------------------ [~bdelacretaz] ClassRule is used to instruct JUnit to use this rule as a "BeforeClass" / "AfterClass", while the "Rule" is used for the "Before" / "After", there is no existing annotation to my knowledge that exist in Junit to replace it as a "Rule&ClassRule" annotation... maybe an enhancement for Junit as then the Rule can decide based on the "description" information if it need to do anything as a BeforeClass or as a Before since getMethodName will return null in the case it is used as a BeforeClass. So in Junit 4.12 at least it is allowed to use both annotation for the same field (as static for the test class). > TeleporterRule test bundles should be installed once per test class only > ------------------------------------------------------------------------ > > Key: SLING-5352 > URL: https://issues.apache.org/jira/browse/SLING-5352 > Project: Sling > Issue Type: Improvement > Components: Testing > Affects Versions: JUnit Tests Teleporter 1.0.4 > Reporter: Thierry Ygé > Assignee: Bertrand Delacretaz > Attachments: clientsideteleporter_patch.txt, > clientsideteleporter_patch_v2.txt, clientsideteleporter_patch_v3.txt, > teleporter_test_classrule.tgz > > > Currently it's not possible to use the TeleporterRule as Rule and ClassRule > annotation. > The idea is that BeforeClass will create the bundle and install it. > AfterClass will uninstall it. This will optimize the processing and avoid a > lot of round trip and waits. It still allow to use it as in the original > version with only Rule annotation. > I have made some test , and will attach my suggested solution. It allow to > use it as before: > {code} > @Rule > public TeleporterRule classRule = > TeleporterRule.forClass(SomeMoreTest.class, "Launchpad"); > {code} > or as follow with a ClassRule annotation: > {code} > @ClassRule > public static TeleporterRule classRule = > TeleporterRule.forClass(SomeTest.class, "Launchpad"); > @Rule > public TeleporterRule teleporterRule = classRule; > {code} > The changes are not so big, it only need a static field to store the bundle > symbolic name value in the case it is used with the ClassRule annotation. > Then adapt the logic in the statement to differentiate between ClassRule and > Rule usages. -- This message was sent by Atlassian JIRA (v6.3.4#6332)