[ 
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)

Reply via email to