Shingo: a flaw in your test was that "inform" was never called on the SynonymFilterFactory you were manually constructing, so it never attempted to instantiate your "TestTokenizerFactory", so all of the checks you had in it's constructor were being ignored.
I simplified the test to use tokenFilterFactory() to try and deal with this, but that exposed another problem: since your TestTokenizerFactory class isn't registered with SPI, "lookupClass()" fails on it.
To simplify all of this, I changed the test to us a real tokenizer factory with mandatory init arg (PatternTokenizerFactory), so we can check both the positive and negative cases – this includes an explicit check that specifying params which neither the SynonymFilterFactor nor the tokenizerFactory are expecting causes an error.
I also tweaked your javadocs to try and clarify that the param prefix could be used even if the param names don't conflict, and re-ordered the param parsing code to group of of the tokenizerFactory stuff together.
still running full tests.