Если произойдет сбой из-за совпадения, попытка будет соответствовать всей строке, ваше регулярное выражение соответствует 1 символу, которого нет в списке символов, который вы перечисляете, если вы измените на:
assertTrue(Pattern.compile("[^a-zA-Z0-9]").matcher("abc;").find());
это должно утверждать истину.