phpunit-injector icon indicating copy to clipboard operation
phpunit-injector copied to clipboard

Deprecation notices

Open gjuric opened this issue 5 years ago • 12 comments
trafficstars

1x: The "Zalas\Injector\PHPUnit\TestListener\ServiceInjectorListener" class implements "PHPUnit\Framework\TestListener" that is deprecated Use the TestHook interfaces instead.

1x: The "Zalas\Injector\PHPUnit\TestListener\ServiceInjectorListener" class uses "PHPUnit\Framework\TestListenerDefaultImplementation" that is deprecated The TestListener interface is deprecated.

I am getting these deprecation notices with PHPUnit 9.2.2.

gjuric avatar Jun 15 '20 11:06 gjuric

@gjuric yes, I'm afraid this extension will stop working in PHPUnit 10 due to BC incompatible changes in PHPUnit.

jakzal avatar Oct 26 '20 12:10 jakzal

I've been digging around this a little bit and it seems like the TestHooks in PHPUnit 9.5 are currently not a suitable replacement for TestListeners since they provide only the class name of a test being run and not the actual Test.

I've managed to create a PoC that works by putting the code that is currently in ServiceInjectorListener into a class that is extending PHPUnit\Framework\TestListener, running the code that is in ServiceInjectorListener::startTest() in a setUp() method of this class and making my tests extend this.

I am not really a fan of this approach since one has to remember to call parent::setUp() otherwise this will not work.

Do you have any other ideas/plans on how to approach or do you even plan to work on this? Also, do you need any help?

gjuric avatar Dec 09 '20 10:12 gjuric

@gjuric I don't have the capacity to work on this at the moment, so feel free to take over! I'll be happy to review your POC too.

jakzal avatar Dec 09 '20 10:12 jakzal

OK, looking into it. Unfortunately my idea falls apart if you already need to extend another TestCase class (not the original, PHPUnit one). I've opened an issue on https://github.com/sebastianbergmann/phpunit/issues/4541 but it looks like there will be no suitable replacement for the current implementation.

gjuric avatar Dec 15 '20 15:12 gjuric

@gjuric looks like they won't support it "by design". All's left is to wait and see what kind of support PHPUnit will get for real annotations.

jakzal avatar Dec 16 '20 09:12 jakzal

There's one more thing to check. In the past, I played with AOP to do similar kind of injections. However, with PHPUnit it wasn't possible as AOP frameworks usually hook into the autoloading process and PHPUnit wasn't using composer autloading. Mind checking if that's still the case or have they switched to autoload test classes with composer?

jakzal avatar Dec 16 '20 09:12 jakzal

Perhaps the new event system will somehow enable this: https://github.com/sebastianbergmann/phpunit/issues/4676

jakzal avatar Feb 02 '22 11:02 jakzal

I have migrated another extension to PHPUnit 10: https://github.com/jakzal/phpunit-globals/pull/31

jakzal avatar Jan 06 '23 19:01 jakzal

For anyone who'd like to pick this up, the PHPUnit globals extension also supports attributes now: https://github.com/jakzal/phpunit-globals/blob/main/src/GlobalsAttributeReader.php

jakzal avatar Jan 24 '24 17:01 jakzal