On Sun, 15 Sep 2024 23:53:20 GMT, Jay Bhaskar <jbhas...@openjdk.org> wrote:

>> modules/javafx.web/src/test/java/test/javafx/scene/web/SubresourceIntegrityTest.java
>>  line 99:
>> 
>>> 97:     @ParameterizedTest
>>> 98:     @MethodSource("dataProvider")
>>> 99:     public void testScriptTagWithCorrectHashValue() {
>> 
>> Major: This methods need the parameters from the `MethodSource` AFAIK, that 
>> is:
>> `testScriptTagWithCorrectHashValue(String hashValue, String expected) { .. }`
>> 
>> The member variables should be removed then:
>> ``` 
>> private final String hashValue = "";
>> private final String expected = "";
>
> In this case, keeping the values as instance variables is more reliable. 
> Since all the tests pass when hashValue and expected are instance variables 
> and  some of them fail when I  adding parameter to 
> testScriptTagWithCorrectHashValue , 
> 
> it's likely that their assignment happens at the correct time relative to the 
> @BeforeEach setup. Using parameters may interfere with the test lifecycle, 
> since hasValue is being used in 
>     @BeforeEach
>     public void setup() ....{}
> 
>  it's safer and more straightforward to use instance variables.This would 
> also make it easier to manage the state across @BeforeEach

I think you need to do the same as done by @andy-goryachev-oracle in his JUnit5 
replacement PR:

    public void setup(String hashValue, String expected) throws Exception {
        htmlFile = new File("subresource-integrity-test.html");
        ...
    }

    @ParameterizedTest
    @MethodSource("dataProvider")
    public void testScriptTagWithCorrectHashValue(String hashValue, String 
expected) {
        setup(hashValue, expected);
        ...
    }


This way you dont need the instance fields, as they will be empty all the time 
and never assigned.

-------------

PR Review Comment: https://git.openjdk.org/jfx/pull/1567#discussion_r1761017166

Reply via email to