Running Magento 2 Unit Tests With Code Coverage [Archive]

Gabriel Somoza
Oct 25, 2019 · Unlisted

Over the past several weeks I’ve been preparing a talk on Magento 2 for the PHP Forum 2015 conference in Paris. Part of the talk deals with Magento’s unit tests, so I had to run them many times against the latest updates — but I kept on running into the same issue whenever I executed unit tests with coverage reporting enabled:

Trying to @cover or @use not existing method “\Magento\CatalogUrlRewrite\Observer\AfterImportDataObserver::afterImportData”.

This looks definitely like an issue on their side, and it always happens at around 17%. But since all I want is to see rough coverage figures for different areas of the code-base, here’s a quick temporary workaround that gets rid of all @covers annotations.

This more a note-to-self than anything else really, and its definitely not a solution. You should know that coverage might be affected (inflated) by this change, which is something I’ll mention in the talk.

NOTE: this was only tested on Mac OSx 10.11.1 — but regardless of what you’re using: if you choose to execute the following commands, you should know you’re doing it at your own risk.

The command for linux should be very similar: check the documentation for sed for the correct syntax.

I do hope I can save someone else the 5 minutes it takes to put those commands together in order to at least get some “idea” of how much coverage Magento 2 has :) — for me that’s about 41% at this point, with 2 failed tests and 16000+ assertions. Which is huge when compared to other PHP eCommerce solutions.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store