The difficulty is not really 1.
testnet has a "20-minute rule": if no block is successfully mined within 20 minutes, the difficulty drops to 1 until a block is mined. Then it reverts to its previous value. However, it appears that
getdifficulty returns 1 whenever the most recent block was difficulty 1, even if it was accepted under the 20-minute rule; this doesn't necessarily match the "real" difficulty.
I've asked a new question about how to find the real difficulty. But by browsing blocks on http://blockexplorer.com/testnet, the most recent block which was less than 20 minutes newer than its predecessor is 153337, which has a difficulty of 11512. So most likely the real difficulty right now is 11512, unless it has adjusted very recently.
Thus there are two possible ways for you to mine a block:
Find a block at difficulty 11512. If your computation was right, this will happen on average once every 2 years with your current machine.
Wait until it has been 20 minutes since the last block, and find a block at difficulty 1 before anyone else does. Looking at recent timestamps, it appears that difficulty 1 blocks are typically submitted about 20 minutes and 4 seconds after the previous block. Thus, you have about a 4 second window to find a difficulty 1 block (probably even less due to propagation delays). Based on your computation, your probability of successfully doing this on any given block is at most about 0.0007, suggesting that you would succeed roughly once every 3 weeks on average (this is probably very optimistic as noted). Even if you do mine a block within this time, another miner may find a block at roughly the same time; if the next miner to find a block decides to accept his instead of yours, yours will be orphaned and excluded from the chain.
So it is not surprising that you have not successfully generated a block.