AsyncUnit
  • Labrador AsyncUnit
  • Tutorials
    • Getting Started
    • TestCase Hooks
    • Test Suites
    • Disabling Tests
    • Data Providers
    • Making Expectations
    • Test Timeout
  • How To
    • Writing Custom Assertions
  • Reference
    • Assertions
    • Events
    • Hooks
    • CLI Tool
    • Internal Overview
  • AsyncUnit vs PHPUnit
  • Roadmap
Powered by GitBook
On this page

Was this helpful?

  1. Tutorials

Test Timeout

Control runaway async code by ensuring that tests complete within a giving time period using the #[Timeout] Attribute!

When writing asynchronous unit and integration tests there could be a possibility that your code executes for longer than expected or hangs on an async operation not properly handled. In these situations it can be helpful to fail the test after a defined period of time to ensure other tests can operate and test processing can finish without having to manually kill the process. You can easily add a timeout to a test by adding the #[Timeout] Attribute to the test, TestCase, or TestSuite6. The value provided should be the amount of milliseconds the test is expected to complete in.

<?php

use Cspray\Labrador\AsyncUnit\TestCase;
use Cspray\Labrador\AsyncUnit\Attribute\Test;
use Cspray\Labrador\AsyncUnit\Attribute\Timeout;

class MyExceptionTestCase extends TestCase {

    #[Test]
    #[Timeout(100);
    public function checkExceptionThrown() {
        yield new Delayed(150);
        yield $this->asyncAssert()->floatEquals(3.14, 3.14);
    }

}

This test will be marked as a failure with a message indicating that it did not complete before the given timeout period.

PreviousMaking ExpectationsNextWriting Custom Assertions

Last updated 3 years ago

Was this helpful?