The answer below is for the first version of the question:
> I'd really like to receive the messages from the integrand. How can I stop `NIntegrate` from suppressing the messages?
There are several reasons for this behavior. Generally speaking, `NIntegrate` pre-evaluates and localizes the integrands in order to facilitate different symbolic pre-processing and numerics algorithms.
If we redefine the integrand with `Piecewise` we will get the message once, when [`PiecewiseNIntegrate`](https://mathematica.stackexchange.com/a/95260/34008) does the preprocessing:
In[142]:= ClearAll[Test, test]
test[x_] := Piecewise[{{Message[Test::message]; x^2, 1 < x < 2}}, x];
NIntegrate[test[x], {x, 0, 3}]
During evaluation of In[142]:=
Test::message: -- Message text not found --
Out[144]= 5.33333
Further, we can prevent the symbolic processing with `_?NumericQ` and use `Print` or `Echo`. (Note that the integral converges too slowly.)
ClearAll[Test, test]
test[x_?NumericQ] :=
If[1 < x < 2, (Echo[Row[{Test::message, " : ", x}]]; x^2), x];
NIntegrate[test[x], {x, 0, 3}, PrecisionGoal -> 2]
(*
Test::message : 1.08055
Test::message : 1.5
Test::message : 1.91945
...
5.34841 *)
I am not sure what kind of testing you want to do. You might consider using [`EvaluationMonitor`](https://reference.wolfram.com/language/ref/EvaluationMonitor.html) or [`IntegrationMonitor`](https://mathematica.stackexchange.com/a/96663/34008) instead.