DZone
DevOps Zone
Thanks for visiting DZone today,
Edit Profile
  • Manage Email Subscriptions
  • How to Post to DZone
  • Article Submission Guidelines
Sign Out View Profile
  • Post an Article
  • Manage My Drafts
Over 2 million developers have joined DZone.
Log In / Join
  • Refcardz
  • Trend Reports
  • Webinars
  • Zones
  • |
    • Agile
    • AI
    • Big Data
    • Cloud
    • Database
    • DevOps
    • Integration
    • IoT
    • Java
    • Microservices
    • Open Source
    • Performance
    • Security
    • Web Dev
DZone > DevOps Zone > Is JUnit Only for Unit Testing?

Is JUnit Only for Unit Testing?

Can JUnit be useful for other applications beyond unit testing? Yes! It can actually be used to execute code to support any kind of testing.

Alan Richardson user avatar by
Alan Richardson
·
Aug. 03, 16 · DevOps Zone · Opinion
Like (8)
Save
Tweet
8.06K Views

Join the DZone community and get the full member experience.

Join For Free

Question

Hi, you use JUnit in the book Java For Testers and I thought JUnit was used for "unit testing" and "unit testing" was performed by developers, not testers. Is the purpose to learn JUnit and "unit testing" or other types of testing as well? In other words, would you recommend learning "Java for Testers" to software testers who would rather not be involved in “unit testing" but rather involved in "system and UAT"?

Image title

Answer

JUnit is used for unit testing. And, it is used for other types of testing as well.

I don’t think of JUnit as a Unit Testing Tool. Instead, I view it as a way of running code marked as "runnable by JUnit." That code is marked by  @Test  annotations and is often called a Test, and those "Tests" are often used for Unit testing, but they don’t have to be.

JUnit can be used as a test runner for any kind of test: e.g. system and integration tests; tests which are interacting with a deployed application.

E.g. the WebDriver tests here all use JUnit, and they interact with an application which runs in a browser. And you can see me using JUnit here to aid my interactive exploratory and system testing of an API. The name JUnit should not lead you to think that it is only for Unit testing.

If you want to automate, from code, then you’ll need some way of executing the code. In the book, we use JUnit as Test Runner to execute code. I see a lot of examples of “how to learn Java” which use "main" methods to allow execution of the code.

main methods are a good approach if you want to compile your code into an application.

Unfortunately I’ve seen that when people learn to write Java this way, they often have multiple "main" methods in their code, without really knowing why a "main" method is used. And, they don’t learn any strategies for running bits of code in an adhoc fashion, as well as a strategic fashion.

In the book Java For Testers I wanted people to learn Test Driven Development, but not make it a thing (just a natural process), so all the execution capabilities of the code are provided by  @Test  annotations, and executed from JUnit. This allows us to:

  • Run arbitrary code without creating main methods or packaging the app
  • Use any library, not just for Unit testing, but also for Testing that integrates with deployed applications e.g. Web or API
  • Tactically create suites which we can use longer term
  • Unit test the abstraction layers and support code that we write so that we do Unit test, our System and Integration test code
  • Easily add our code into a continuous integration approach

Hopefully, as you work through the book, that will all become clearer.

If you want to automate, you will need to write code, and you’ll want to unit test that code as well, and you’ll use JUnit for that, as well as using JUnit to provide the ability to execute your code.

I rarely unit test the applications I work on as a tester, but I do unit test the code I write to automate those applications as part of my testing.

Hope that makes sense!

P.S. I think you are unlikely to strategically automate as part of a UAT process. But you might tactically automate (adhoc) data setup and configuration, and you’ll need coding skills to do that effectively.

unit test JUnit application

Published at DZone with permission of Alan Richardson, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

Popular on DZone

  • What Happened to HornetQ, the JMS That Shattered Records?
  • Event Loop in JavaScript
  • Update on Closures Coming to Java 7
  • Software Methodologies — Waterfall vs Agile vs DevOps

Comments

DevOps Partner Resources

X

ABOUT US

  • About DZone
  • Send feedback
  • Careers
  • Sitemap

ADVERTISE

  • Advertise with DZone

CONTRIBUTE ON DZONE

  • Article Submission Guidelines
  • MVB Program
  • Become a Contributor
  • Visit the Writers' Zone

LEGAL

  • Terms of Service
  • Privacy Policy

CONTACT US

  • 600 Park Offices Drive
  • Suite 300
  • Durham, NC 27709
  • support@dzone.com
  • +1 (919) 678-0300

Let's be friends:

DZone.com is powered by 

AnswerHub logo