### Apache Airflow version

2.2.0b2 (beta snapshot)

### Operating System

ubuntu 20.04

### Versions of Apache Airflow Providers

n/a

### Deployment

Virtualenv installation

### Deployment details

pip install /path/to/airflow/src

### What happened

Given any DAG initialized with: `schedule_interval=None`

Run `airflow dags test mydagname $(date +%Y-%m-%d)` and get an error:

```
INFO - No run dates were found for the given dates and dag interval.
```

This behavior changed in https://github.com/apache/airflow/pull/15397, it used to trigger a backfill dagrun at the given date.

### What you expected to happen

I expected a backfill dagrun with the given date, regardless of whether it fit into the `schedule_interval`.

If AIP-39 made that an unrealistic expectation, then I'd hope for some way to define unscheduled dags which can still be tested from the command line (which, so far as I know, is the fastest way to iterate on a DAG.).

As it is, I keep changing `schedule_interval` back and forth depending on whether I want to iterate via `astro dev start` (which tolerates `None` but does superfluous work if the dag is scheduled) or via `airflow dags test ...` (which doesn't tolerate `None`).

### How to reproduce

Initialize a DAG with: `schedule_interval=None` and run it via `airflow dags test mydagname $(date +%Y-%m-%d)`

### Anything else

_No response_

### Are you willing to submit PR?

- [ ] Yes I am willing to submit a PR!

### Code of Conduct

- [X] I agree to follow this project's [Code of Conduct](https://github.com/apache/airflow/blob/main/CODE_OF_CONDUCT.md)

airflow/models/dag.py
"""Get the data interval of this run.
        For compatibility, this method infers the data interval from the DAG's
        schedule if the run does not have an explicit one set, which is possible for
        runs created prior to AIP-39.
        This function is private to Airflow core and should not be depended as a
        part of the Python API.
        :meta private:
        """
        if run.dag_id is not None and run.dag_id != self.dag_id:
            raise ValueError(f"Arguments refer to different DAGs: {self.dag_id} != {run.dag_id}")
        data_interval = _get_model_data_interval(run, "data_interval_start", "data_interval_end")
        if data_interval is not None:
            return data_interval
        
        
        return self.infer_automated_data_interval(run.execution_date)
    def infer_automated_data_interval(self, logical_date: datetime) -> DataInterval: