Я пытаюсь использовать dataProvider, который предоставляет грамматику для синтаксического анализатора и ожидаемой ошибки.Testng Ожидаемые сообщения об ошибках с ANTLR 4
@Test(expectedExceptions = org.antlr.v4.runtime.misc.ParseCancellationException.class, expectedExceptionsMessageRegExp = ".*line .*", dataProvider = "antlrInput")
public void TestParsing(String input, String empty) throws ParseCancellationException {
ProgramLexer lexer = new ProgramLexer(new ANTLRInputStream(input));
lexer.removeErrorListeners();
lexer.addErrorListener(DescriptiveErrorListener.INSTANCE);
CommonTokenStream tokens = new CommonTokenStream(lexer);
ProgramParser parser = new ProgramParser(tokens);
parser.removeErrorListeners();
parser.addErrorListener(DescriptiveErrorListener.INSTANCE);
ParseTree tree = parser.program();
}
@DataProvider
public Object[][] antlrInput() {
return new Object[][] {
{"int x", "line 1:5 missing ';' at '<EOF>'"},
{"int x, d", "line 1:5 mismatched input ',' expecting ';'"},
};
}
Где это говорит expectedExceptionsMessageRegExp = ".* line .*
я хочу, чтобы иметь возможность использовать вторую часть массива в DataProvider в.
Как видно в dataProvider, брошенное сообщение будет отличаться в зависимости от того, какую грамматику я использую в качестве входных данных, и это то, что я хочу проверить.
Используя утверждение было что-то я думал об этом, но как я могу проверить сообщение об исключении в утверждении? – darophi