私はparserとexpectederrormessageの文法を提供するdataProviderを使用しようとしています。それはexpectedExceptionsMessageRegExp = ".* line .*
私はdataProviderのの配列の第2の部分を使用することができるようにしたいと言う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 ';'"},
};
}
。
dataProviderに表示されるように、投げられたメッセージは、私が入力として使用する文法の種類によって異なります、そして、それは私がテストしたいものです。
とそれを主張は、私が考えたものだったが、どのように私は例外メッセージを確認することができますアサーションで? – darophi