[arquillian-issues] [JBoss JIRA] (ARQGRA-433) FieldAccessValidatorEnricher checks access to fields uniformly

Lukáš Fryč (JIRA) issues at jboss.org
Thu May 29 06:13:15 EDT 2014


    [ https://issues.jboss.org/browse/ARQGRA-433?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12971556#comment-12971556 ] 

Lukáš Fryč edited comment on ARQGRA-433 at 5/29/14 6:11 AM:
------------------------------------------------------------

{quote}
I would personaly remove that FieldAccessEnricherValidator from Graphene completely when you are considering to remove it in the future, why not to remove it now ...
{quote}

[As I have pointed out|https://issues.jboss.org/browse/ARQGRA-433?focusedCommentId=12963482&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-12963482], there are two reasons why using publicly accessible fields can't be recommended. We either need to fix the approach how proxies are used for interception of calls and injections or we should keep warning user that his usage can has unexpected consequences.

----

-One approach that could work without checking test class annotations is leveraging Arquillian BeforeClass event, that contain a type of the test class. When stored properly, you can access it during injection time and check whether enriched object is type of test being ran at the moment.-


was (Author: lfryc):
{quote}
I would personaly remove that FieldAccessEnricherValidator from Graphene completely when you are considering to remove it in the future, why not to remove it now ...
{quote}

[As I have pointed out|https://issues.jboss.org/browse/ARQGRA-433?focusedCommentId=12963482&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-12963482], there are two reasons why using publicly accessible fields can't be recommended. We either need to fix the approach how proxies are used for interception of calls and injections or we should keep warning user that his usage can has unexpected consequences.

----

One approach that could work without checking test class annotations is leveraging Arquillian BeforeClass event, that contain a type of the test class. When stored properly, you can access it during injection time and check whether enriched object is type of test being ran at the moment.

> FieldAccessValidatorEnricher checks access to fields uniformly
> --------------------------------------------------------------
>
>                 Key: ARQGRA-433
>                 URL: https://issues.jboss.org/browse/ARQGRA-433
>             Project: Arquillian Graphene
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 2.0.2.Final
>            Reporter: Stefan Miklosovic
>            Priority: Optional
>             Fix For: 2.0.3.Final
>
>
> I have this test
> {code}
>     @Rule
>     public ExpectedException expectedException = ExpectedException.none();
>     @Test
>     @InSequence(2)
>     @ReportMessage("This method should pass.")
>     public void testWithExpectedExceptionRule() {
>         expectedException.expect(RuntimeException.class);
>         throw new RuntimeException("this exception is expected");
>     }
> {code}
> Logger writes this out:
> WARNING: Public field 'expectedException' found in org.arquillian.droidium.devconf.AeroGearTestCase. Direct access to fields outside of the declaring class is not allowed.
> Apr 01, 2014 11:50:27 AM org.jboss.arquillian.graphene.enricher.FieldAccessValidatorEnricher checkFieldValidity
> However that @Rule field _has to be_ public
> {quote}
> A field must be public, not static, and a subtype of TestRule
> {quote}
> So in this case  validation does not make sense.



--
This message was sent by Atlassian JIRA
(v6.2.3#6260)



More information about the arquillian-issues mailing list