# Disabling Tests

In a complex test suite there might be times where you need to disable tests for a variety of reasons. If you're familiar with PHPUnit their nomenclature is *skipped or ignored.* In AsyncUnit we consolidate this into one concept; a disabled test. You can disable not only a test but an entire `TestCase` or even a whole `TestSuite` with the `#[Disabled]` attribute!

{% hint style="info" %}
Conditional test disabling is a feature that is coming in the [0.6 version](/async-unit/roadmap.md#0-6-0-features)!
{% endhint %}

### Disabling a single test

If you just need to disable a single test simple annotate that method with the `#[Disabled]` Attribute!

```php
<?php

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

class MyDisabledTest extends TestCase {

   #[Test]
   #[Disabled]
   public function checkSomething() {
      // none of this matters because this is never executed
   }   


}
```

When disabling a single test any `#[BeforeEach]` or `#[AfterEach]` hook defined on the `TestCase` will not be executed.

### Disabling a TestCase

Chances are if one test in a `TestCase` needs to be disabled so do all the other tests. In those situations you can simply annotate the class with the `#[Disabled]` Attribute.

```php
<?php

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

#[Disabled]
class MyDisabledTestCase extends TestCase {

   #[Test]
   public function checkSomething() {
      // none of this matters because this is never executed
   }   
   
   #[Test]
   public function checkSomethingElse() {
      // this doesn't matter either... it will never run!
   }
   
   #[Test]
   public function anotherDisabledTest() {
      // more stuff that won't ever run
   }

}
```

When disabling an entire `TestCase` not only are none of the tests executed but none of the hooks associated with that `TestCase` are executed either.

### Disabling a TestSuite

If you're utilizing an explicit `TestSuite` it might be beneficial to disable all of the `TestCase` associated to the `TestSuite`. Just like with the `TestCase` simply annotate the appropriate class with the `#[Disabled]` Attribute!

```php
<?php

use Cspray\Labrador\AsyncUnit\TestCase;
use Cspray\Labrador\AsyncUnit\TestSuite;
use Cspray\Labrador\AsyncUnit\Attribute\Test;
use Cspray\Labrador\AsyncUnit\Attribute\DefaultTestSuite;
use Cspray\Labrador\AsyncUnit\Attribute\Disabled;

#[Disabled]
#[DefaultTestSuite]
class MyTestSuite extends TestSuite {}

class FirstTestCase extends TestCase {

   #[Test]
   public function checkSomething() {
      // none of this matters because this is never executed
   }   
   
   #[Test]
   public function checkSomethingElse() {
      // this doesn't matter either... it will never run!
   }
   
   #[Test]
   public function anotherDisabledTest() {
      // more stuff that won't ever run
   }

}

class SecondTestCase extends TestCase {

   #[Test]
   public function checkSomething() {
      // none of this matters because this is never executed
   }   
   
   #[Test]
   public function checkSomethingElse() {
      // this doesn't matter either... it will never run!
   }
   
   #[Test]
   public function anotherDisabledTest() {
      // more stuff that won't ever run
   }

}
```

When disabling a `TestSuite` no tests or hooks for the `TestSuite` or any of its `TestCase` will be invoked!&#x20;


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.labrador-kennel.io/async-unit/tutorials/disabling-tests.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
