Wilcoxon signed-rank test for your data. For the data in your example, a one-sample Wilcoxon test (of the null hypothesis that the population median is $\eta = 0)$ gives the following
non-significant result (in R):
x = c(-0.2, -0.05, 0.1, 0.15, 0.2)
wilcox.test(x)
Wilcoxon signed rank test with continuity correction
data: x
V = 9.5, p-value = 0.6845
alternative hypothesis: true location is not equal to 0
Warning message:
In wilcox.test.default(x) : cannot compute exact p-value with ties
According to this procedure, you have a tie because in the initial ranking step
signs are ignored, so that $pm 0.2$ counts as a tie. But even with one tie,
the P-value is not likely to be catastrophically wrong.
Difficulties with very small samples. You could get a significant result for a one-sided test (of $H_0: \eta =0$ vs. $H_a: \eta > 0$ with $n= 5$ if all five observations are
either above or below $0.$ for example:
x = c(0.1, 0.3, 0.4, 0.5, 0.8)
wilcox.test(x, alt="gr")$p.val
[1] 0.03125
Power of Wilcoxon SR test with 15 observations. Here is a simulation with a million samples of size $n = 15$ from
$\mathsf{Unif}(-.4, 1)$ rounded to one place, so that the population median
is $\eta= 0.7.$ If we have such a sample, what is the probability that
$H_0: \eta = 0$ will be rejected in favor of $H_a: \eta > 0\,?$
This probability is called the 'power' of the test. The simulation suggests
that the power is about 90%. (There are warning messages; with 15 observations rounded to one place, there are almost sure to be ties, but we ignore error messages. A run with no rounding, hence no ties, gave almost the same result.)
set.seed(617)
pv = replicate( 10^5,
wilcox.test(round(runif(15, -.4, 1),1), alt="g")$p.val )
There were 50 or more warnings (use warnings() to see the first 50)
mean(pv <= .05)
[1] 0.81138
The first of the one million runs gave the following result, of which we
used only the P-value in the simulation:
set.seed(617)
x = round(runif(15, -.4, 1),1)
sort(x)
[1] -0.4 -0.3 -0.1 -0.1 0.1 0.2 0.3 0.5 0.7
[10] 0.7 0.8 0.8 0.8 1.0 1.0
wilcox.test(x, alt="g")
Wilcoxon signed rank test with continuity correction
data: x
V = 103.5, p-value = 0.007189
alternative hypothesis: true location is greater than 0
Warning message:
In wilcox.test.default(x, alt = "g") :
cannot compute exact p-value with ties
Summary. The one-sample Wilcoxon test seems best for data, with a couple of caveats: (a) If you can use samples larger than about $n = 10$ you will
have a better chance of discovering when your observations are not centered
at $0.$ (b) You might get fewer ties (thus potentially somewhat more
reliable results) if you can use data with two (or more) decimal places rather than one.