Teste de unidade refere-se a o que você está testando, TDD para quando você está testando.
Os dois são ortogonais.
Teste unitário significa, bem, testar unidades individuais de comportamento. Uma unidade individual de comportamento é a menor unidade possível de comportamento que pode ser individualmente testada isoladamente. (Eu sei que essas duas definições são circulares, mas elas parecem funcionar muito bem na prática.)
Você pode escrever testes de unidade antes de escrever seu código, depois de escrever seu código ou enquanto escreve seu código.
TDD significa (mais uma vez, obviamente) deixar seus testes impulsionarem seu desenvolvimento (e seu design). Você pode fazer isso com testes de unidade, testes funcionais e testes de aceitação. Normalmente, você usa todos os três.
A parte mais importante do TDD é o meio D . Você deixa os testes conduzirem você. Os testes lhe dizem o que fazer, o que fazer a seguir, quando terminar. Eles dizem o que a API vai ser, o que é o design. (Isso é importante: TDD não é sobre escrever testes primeiro. Existem muitos projetos que escrevem testes primeiro, mas não praticam TDD. Escrever testes primeiro é simplesmente um pré-requisito para permitir que os testes conduzam o desenvolvimento.)