If "enable on the fly" is on and the CRS changes at all during the lifetime of a project then seemingly, it refuses to measure (using the measure tool I just get 0.00000). So new project with all the layers added in the same CRS (OSGB British National Grid EPSG:27700 which we used one QGIS 2.18) it measures, but it gets it wrong. When compared with Google it's about 0.8m rather than 1m.
If the project is all saved as and only ever goes into EPSG:3857 then it seems to be right, but if you accidentally add a layer with a different CRS, it doesn't measure at all.
Am I doing something wrong?