anova() can work with a mixture lmer and lm models. However, due to the way that R's type system is set up, it only works if the first argument is an lmer model. That is, the anova.merMod() method (which gets called if the first argument is a [g]lmer model) knows how to deal with lm objects, but the anova.lm() method (which gets called if an lm object is first) doesn't know about merMod objects ...
> library(lme4)
Loading required package: Matrix
> fm1 <- lmer(Reaction ~ Days + (1|Subject), sleepstudy, REML = FALSE)
> fm2 <- lm(Reaction ~ Days, sleepstudy)
> fm3 <- lm(Reaction ~ 1, sleepstudy)
> anova(fm1, fm2, fm3)
Data: sleepstudy
Models:
fm3: Reaction ~ 1
fm2: Reaction ~ Days
fm1: Reaction ~ Days + (1 | Subject)
npar AIC BIC logLik deviance Chisq Df Pr(>Chisq)
fm3 2 1965.0 1971.4 -980.52 1961.0
fm2 3 1906.3 1915.9 -950.15 1900.3 60.756 1 6.461e-15 ***
fm1 4 1802.1 1814.8 -897.04 1794.1 106.214 1 < 2.2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
> anova(fm3, fm2, fm1)
Error: $ operator not defined for this S4 class