Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Deprecation notices #33

Open
gjuric opened this issue Jun 15, 2020 · 9 comments
Open

Deprecation notices #33

gjuric opened this issue Jun 15, 2020 · 9 comments

Comments

@gjuric
Copy link
Contributor

gjuric commented Jun 15, 2020

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.

@jakzal
Copy link
Owner

jakzal commented Oct 26, 2020

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

@gjuric
Copy link
Contributor Author

gjuric commented Dec 9, 2020

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?

@jakzal
Copy link
Owner

jakzal commented Dec 9, 2020

@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.

@gjuric
Copy link
Contributor Author

gjuric commented Dec 15, 2020

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 sebastianbergmann/phpunit#4541 but it looks like there will be no suitable replacement for the current implementation.

@jakzal
Copy link
Owner

jakzal commented Dec 16, 2020

@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
Copy link
Owner

jakzal commented Dec 16, 2020

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
Copy link
Owner

jakzal commented Feb 2, 2022

Perhaps the new event system will somehow enable this: sebastianbergmann/phpunit#4676

@jakzal
Copy link
Owner

jakzal commented Jan 6, 2023

I have migrated another extension to PHPUnit 10: jakzal/phpunit-globals#31

@jakzal
Copy link
Owner

jakzal commented Jan 24, 2024

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants