This week's book giveaway is in the Java 8 forum.
We're giving away four copies of Java 8 in Action and have Raoul-Gabriel Urma, Mario Fusco, and Alan Mycroft on-line!
See this thread for details.
The moose likes Testing and the fly likes Tools for testing static methods Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Java 8 in Action this week in the Java 8 forum!
JavaRanch » Java Forums » Engineering » Testing
Bookmark "Tools for testing static methods" Watch "Tools for testing static methods" New topic
Author

Tools for testing static methods

Dale DeMott
Ranch Hand

Joined: Nov 02, 2000
Posts: 515
Does anyone know of any testing tools that will Unit test static methods?


By failing to prepare, you are preparing to fail.<br />Benjamin Franklin (1706 - 1790)
John Lee
Ranch Hand

Joined: Aug 05, 2001
Posts: 2545
mock object
Barry Gaunt
Ranch Hand

Joined: Aug 03, 2002
Posts: 7729
What's a mock object, Don? I've heard of a Mock Turtle, but mock object never. Could you explain in full detail?
Thanks
-Barry


Ask a Meaningful Question and HowToAskQuestionsOnJavaRanch
Getting someone to think and try something out is much more useful than just telling them the answer.
John Lee
Ranch Hand

Joined: Aug 05, 2001
Posts: 2545
mock object
it is pretty new to me. if this is not good enough, just do s search on google.
Don Kiddick
Ranch Hand

Joined: Dec 12, 2002
Posts: 580
JUnit
John Lee
Ranch Hand

Joined: Aug 05, 2001
Posts: 2545
Mock Objects is perhaps the best resource on the net.
Dale DeMott
Ranch Hand

Joined: Nov 02, 2000
Posts: 515
Are you sure Mock Objects will allow you to test static methods? In working w/Mock Objects, it is to my understanding that these objects mock the original objects so you can stub in the method calls. Does this hold for static methods as well?
John Lee
Ranch Hand

Joined: Aug 05, 2001
Posts: 2545
Originally posted by Dale DeMott:
Are you sure Mock Objects will allow you to test static methods? In working w/Mock Objects, it is to my understanding that these objects mock the original objects so you can stub in the method calls. Does this hold for static methods as well?

i can not see static methods make big difference here...but i am not sure.
Dale DeMott
Ranch Hand

Joined: Nov 02, 2000
Posts: 515
Usually with mock objects you create an interface that has the same method calls as your original object that you are testing. Then you have both your mock object and your original object implement the same interface. Then you have your program use this interface instead of your real object. This allows you to switch out the real object and the mock object without your program knowing objects have been switched out.
Car implements ICar
MockCar implements ICar
ICar car = new MockCar();
//The code below wouldn't know if 'car' is a mock or not.
This is usually how mock objects are used. (At least in our shop) This leaves out the ability to test static methods. Does anyone else have another method that might be more elegant?
[ May 08, 2003: Message edited by: Dale DeMott ]
John Lee
Ranch Hand

Joined: Aug 05, 2001
Posts: 2545
well, i just start reading on mock object, but i am sure you will fiind better answer in test forum.
Dale DeMott
Ranch Hand

Joined: Nov 02, 2000
Posts: 515
For MockObjects, I have already looked for a solution. I was wondering if someone found something other than MockObjects that can help you with this. (And yes. Cindy should move this to the Testing forum)
Cindy Glass
"The Hood"
Sheriff

Joined: Sep 29, 2000
Posts: 8521
Just what I was thinking. Moving to the Testing Forum.


"JavaRanch, where the deer and the Certified play" - David O'Meara
Chris Mathews
Ranch Hand

Joined: Jul 18, 2001
Posts: 2712
I am confused by this thread. I fail to see what makes unit testing static methods any harder than unit testing non-static methods...
Dale DeMott
Ranch Hand

Joined: Nov 02, 2000
Posts: 515
Maybe I didn't word this quite as clear as I would have liked to. Unit testing a static method is very easy. Your quite right that this would be no harder than testing a non-static method. However if you were testing a subsystem with something like MockObjects, how might you test a system with static methods in the dependant classes. As you probably know, MockObjects are used to replaced your real dependant objects in your sub system. If these real dependant objects have static methods, how might you still go about testing your sub system?
I did find a product that can help you with this, however I guess I was looking for something that might be open source or free. I did find a product that can do this... that was AgileTest.
http://www.polygenix.com
Explaining my point a bit farther.. read my example below...
Example-
You are testing MainClassObject
MainClassObject depends on DependantClassA and DependantClassB.
DependantClassA and DependantClassB both have static methods in them. Using MockObjects, how might you test MainClassObject? Or is there any other testing sub-systems that can help you with this? (Besides AgileTest)
-Dale
[ May 08, 2003: Message edited by: Dale DeMott ]
Ilja Preuss
author
Sheriff

Joined: Jul 11, 2001
Posts: 14112
You are correct that you can't mock static methods, as mock objects rely on polymorphic method calls (and static methods aren't polymorphic in Java).
What you can do, is not calling the static method directly, but through a Facade object. The production facade can delegate to the static method, and you can mock it in your tests.
Did that help?


The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus
Dale DeMott
Ranch Hand

Joined: Nov 02, 2000
Posts: 515
Not quite sure. Can you explain a bit more about it.
Frank Carver
Sheriff

Joined: Jan 07, 1999
Posts: 6920
Here's a simple example:
Original code:

New code:


Read about me at frankcarver.me ~ Raspberry Alpha Omega ~ Frank's Punchbarrel Blog
Dale DeMott
Ranch Hand

Joined: Nov 02, 2000
Posts: 515
Thanks. That helps!
Dale
 
 
subject: Tools for testing static methods
 
Similar Threads
Tools for testing static methods
Different Tools: Java & Others.
Unit testing static methods
Singleton class - unit testing ?
testing methods with no return