They're just trying to move the cost of identifying talent from their bank account to yours. You can do the reverse.
Find someone in the company (preferably someone you know). Ask him if he wants a recruitment bonus from his firm. Then send him your resume. He gets money for sending an email on your behalf, and you don't have to take these silly tests. MBAs and HR folk don't have to jump through all of these hoops to get hired. Why should programmers?