I think the behavior should change:

Originally, a new temporary directory would be created for every set up, then `settings.STATIC_ROOT` would be assigned to that directory until it's time to tear down the test. This is incompatible with the way the `override_settings` decorator should work in principle for classes. That is, the class should be able to specify `settings.STATIC_ROOT` in the decorator and be done with it, instead of having it change for every test run under that class, which happens if we use the tempfile module to create the directory for us.

Interestingly, changing the behavior to use a fixed directory that is deleted on `tearDown` by the `shutil.rmtree` call reveals behavior that is expected but fails `TestCollectionDryRun`. This is because calling `collectstatic` as a dry run doesn't even create the directory specified by `settings.STATIC_ROOT`. The test will check if the directory is empty and fail because there is no directory.

My change creates the directory in `setUp` to fix the test, but I suspect more testing is probably warranted for `TestCollectionDryRun` to ensure its behavior never creates a directory when there is none already.