It is wrong because:

 - **it is fundamentally incorrect** (a theoretical concern)
 - **it leads to bad results** (a practical concern)

----------

It is fundamentally incorrect because usually **the objective of testing a model is to estimate how well it will perform predictions on data that the model didn't see**. 

It's quite hard to come up with good estimates of real-world performance,  even when you do everything correctly. If you use training data to estimate the performance the result is worse than useless, it's actively misleading.

There's several ways that doing this can lead to bad results.

## Overfitting

If you're training a complex model with small amount of data, your model is very likely to [overfit](https://en.wikipedia.org/wiki/Overfitting). In a simplified way, we can say that if the has a lot of "memory" (parameters), it memorizes the training data, and fails to understand its underlying structure.

Overfitting is commonly detected through a large difference in performance between the training and test set. If you test on the training set, you're unable to detect overfitting.

## Concept drift

If you make sure you're training a very simple model on a large amount of data, even if there's no overfitting, it's common for models to suffer from [concept drift](https://en.wikipedia.org/wiki/Concept_drift). 

This basically means that the underlying structure of the data can change over time. For example, trying to predict how many sales a store is going to make on the weekend after training on data from Monday to Friday.

If your test data is not diverse enough along the time dimension vs the training set, you won't catch that problem.