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

Disable on a test suite? #27

Open
REBELinBLUE opened this issue Feb 16, 2017 · 6 comments
Open

Disable on a test suite? #27

REBELinBLUE opened this issue Feb 16, 2017 · 6 comments

Comments

@REBELinBLUE
Copy link

I know you can add the annotation to increase the timeout on a per test basis but is there a way to do it on a per test suite basis, for instance I know my integration tests are going to be slow because they tear down and recreate a database between tests

@johnkary
Copy link
Owner

@REBELinBLUE It's not currently possible to set different slowness thresholds on a per-test suite basis. But I would love to add that feature.

How are you defining the test suites in your project? Would you mind posting an example?

@REBELinBLUE
Copy link
Author

Thanks :) I'm just defining them using the tag in the phpunit config file

@johnkary
Copy link
Owner

@REBELinBLUE What might be the best way to disable the listener?

Setting an extremely high slownessThreshold like 999999 would prevent a test reporting slow unless it ran for more than 999 seconds. However a more intentional threshold of 0 might be better. We already use reportLength = 0 to display all slow tests in the output instead of trimming to 5.

What if the SpeedTrapListener supported configuring test suites by supplying the testsuite name? The options configuration could be defined as an array of arrays, where each array has:

  • testSuiteName
  • slownessThreshold
  • reportLength

The XML configuration would look like this for 2 test suites... what do you think?

<phpunit
    backupGlobals               = "false"
    backupStaticAttributes      = "false"
    colors                      = "true"
    convertErrorsToExceptions   = "true"
    convertNoticesToExceptions  = "true"
    convertWarningsToExceptions = "true"
    processIsolation            = "false"
    stopOnFailure               = "false"
    syntaxCheck                 = "false"
    bootstrap                   = "vendor/autoload.php">
    
    <testsuites>
        <testsuite name="Database Test Suite">
            <directory>src/*/*/*/Tests/Database</directory>
        </testsuite>
        <testsuite name="Not Database Test Suite">
            <directory>src/*/*/*/Tests</directory>
            <exclude>
                <directory>src/*/*/*/Tests/Database</directory>
            </exclude>
        </testsuite>
    </testsuites>
    
    <listeners>
        <listener class="JohnKary\PHPUnit\Listener\SpeedTrapListener">
            <arguments>
                <array>
                    <element>
                        <array>
                            <element key="testSuiteName">
                                <string>Database Test Suite</string>
                            </element>
                            <element key="slowThreshold">
                                <integer>0</integer>
                            </element>
                        </array>
                    </element>
                    <element>
                        <array>
                            <element key="testSuiteName">
                                <string>Not Database Test Suite</string>
                            </element>
                            <element key="slowThreshold">
                                <integer>500</integer>
                            </element>
                            <element key="reportLength">
                                <integer>0</integer>
                            </element>
                        </array>
                    </element>
                </array>
            </arguments>
        </listener>
    </listeners>
</phpunit>

@REBELinBLUE
Copy link
Author

REBELinBLUE commented Feb 22, 2017

Awesome, thanks that sounds ideal :)

@johnkary johnkary added this to the 2.0 milestone Mar 2, 2017
@torkiljohnsen
Copy link

@johnkary It would be great if we could use the @slowThreshold annotation on classes too, not just test methods 🙂

@martinbean
Copy link

Is this on the roadmap at all? I’m in the exact same boat (got an integration test suite that has “slow” tests that I’d like to increase the threshold on).

@johnkary johnkary removed this from the 3.1 milestone Mar 14, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants