How to unit test an SQL query?

前端 未结 4 1012
耶瑟儿~
耶瑟儿~ 2021-02-08 11:47

I have a class DBHandler which takes a query, runs it through the SQL server, checks for errors and returns the result. How can I unit test this class?

相关标签:
4条回答
  • 2021-02-08 12:33

    I'd use dependency injection to pass in the database connection or something similar, so that the whole thing can be mocked out in the tests. Then you can write tests where the mock query throws exceptions, returns various errors or valid results. Then your tests are just checking that DBHandler performs correctly.

    0 讨论(0)
  • 2021-02-08 12:36

    A quick solution for a mock db works like this:

    • Setup an HSQLDB test server independent from your app.

    • Populate with test data.

    • Use conditional code where you connect to your real database, to connect to the test server. A property in your application can control this.

    • Test the application

    0 讨论(0)
  • 2021-02-08 12:38

    You'll want to either use an in-memory test database that you create and populate on set-up or make all your tests transactional so they don't alter your test database.

    You'll have to worry about the presence of data.

    If you're using Spring, they have support for transactional unit tests.

    It's not clear what you're asking. You already know about JUnit. What do you think you're missing?

    0 讨论(0)
  • 2021-02-08 12:40

    Just pass a SQL query, and compare the returned result to expected result. Simple. JUnit is a unit test framework, you can utilise that.

    For sophisticated database unit testing, look at DBUnit.

    0 讨论(0)
提交回复
热议问题