It does not use static methods for setting up and cleaning the test environment.

I am referring to the methods that use the @BeforeClass and @AfterClass annotations.

Oh really? This is awesome. What else does TestNG do better?

You can have dependent test scripts.
Test scripts with priorities.
It is easier to run test scripts based on categories and suites.
It is possible to have multiple data providers with values for parameters.
And test scripts can have parameters.

So many good things. Is it difficult to migrate from JUNIT to TestNG?

It is not difficult.

I will show you how it is done.

We will start with simple JUNIT test class and discuss one by one the elements that need changes.

I think browserName previously held the output from the Collection object, so that when, for instance, the input parameter (global.variables.browsers) was set to 'all', the test would be performed for each of the browsers in order

I think browserName previously held the output from the Collection object, so that when, for instance, the input parameter (global.variables.browsers) was set to 'all', the test would be performed for each of the browsers in order