Im still not clear on how I would run the tests without having the appserver started.
Should I be providing my own "dummy" implementations of these classes (Context, DataSource, Connection)? Depending on what you want to do with your tests, you may need Context. When you actually look at it, JNDI is really a simple interface, and I wrote a complete "in-memory" JNDI implementation for testing this sort of thing in a couple of hours. If I find it again, I'll put it up on the web.
If you want to test how your DAO interacts with the database, why not use one of the many simple, pure
Java databases (hypersonic sql is a good example). Set up your minimum test data locally, then pop a DataSource for that database in your in-memory JNDI repository and run your DAO.
All under control of your test runner.
This has the advantage that you can test the real DB behaviour of your DAO, on both correct and faulty data, without any external dependencies at all.