Veja bem, a UML é simplesmente uma linguagem gráfica para descrever classes, objetos e outros aspectos do sistema, como interação entre objetos e estados. Muitas pessoas confundem UML com metodologia, e isso é um erro.
Assim, considerando que UML é apenas uma linguagem, não há como ela contradizer o TDD. Agora, o que realmente contradiz o TDD é o famos Big Design Up Front, ou seja, projetar todo o sistema antes de começar a implementá-lo.
Na prática, tomar o TDD fora de contexto também não faz muito sentido, pois ele é apenas uma técnica, e não uma metodologia completa. No contexto da XP (eXtreme programming) por exemplo, estórias de usuário devem ser implementadas e integradas em ciclos incrementais, não havendo espaço para o BDUF. Nesse contexto, você pode até utilizar UML para esboçar o domínio do problema ou uma arquitetura inicial, porém o que interessa é adicionar funcionalidades ao sistema mas com a disciplina de não quebrar o que já está pronto.
Por fim, eu acho muito importante diferenciar o que são ferramentas, práticas, metodologias, papéis, processos e valores. Do contrário, você corre o risco de assumir certas “verdades” para a atividade de desenvolvimento que acabam por atrapalhar a entrega de valor.