Estou usando RAISERROR()
para fornecer algumas funcionalidades básicas de teste de unidade (como aqui ), mas estou frustrado com a incapacidade de usar FLOATs
na mensagem de erro. Sei que posso converter o float em uma string, mas estou usando RAISERROR
em cada teste de unidade, não quero adicionar outra linha de código para cada teste. (Meus testes de unidade já são prolixos o suficiente!) Existe uma maneira de executar uma conversão/cast inlineRAISERROR
dentro da lista de parâmetros? Ou há outra maneira de contornar essa deficiência?
Atualização: Então, em última análise, o que eu gostaria de fazer é o seguinte:
RAISERROR('Unit Test FAILED! %f', 11, 0, @floatParm)
Infelizmente, RAISERROR
não lida com %f ou floats em geral. Então eu tenho que fazer isso em vez disso:
DECLARE @str VARCHAR(40) = CAST(@floatParm AS VARCHAR(40))
RAISERROR('Unit Test FAILED! %s', 11, 0, @str)
... que parece uma bagunça quando está espalhado por dezenas de testes de unidade. Então, eu gostaria de resumir para algo assim:
RAISERROR('Unit Test FAILED! %s', 11, 0, CAST(@floatParm AS VARCHAR(40))
Mas isso me dá uma Incorrect syntax near 'CAST'
mensagem. Não entendo por que isso é ilegal, mas é. Existe outro "one liner" que eu poderia usar aqui?