da quello che ho capito con questo codice
codice:
.test li a:hover  li ul li  {
visibility:visible;
}
volevi rendere visibile il contenuto del tag annidato[*] al passaggio del cursore (a:hover) sul tag <a>, ma per quanto ne so con css non è possibile definire l'aspetto di un tag , in questo caso[*], tramite un ALTRO tag <a:hover> .

Puoi definire separatamente i tag , ma non stabilire interazioni tra i due, del tipo quando il mouse passa qui sopra rendi visibile un altro tag, per quello c'è javascript, se mi sono perso qualcosa invito gli altri correggermi .
In particolare ti potrebbe tornare utile l'utilizzo di un framework, che tra l'altro avrà effetti visivi più piacevoli da vedere, puoi dare uno sguardo a JQuery per esempio, con il suo JQuery UI.