Home Accessibility Courses Twitter The Mouth Facebook Resources Site Map About Us Contact
 
Python and Tcl - public course schedule [here]
Private courses on your site - see [here]
Please ask about maintenance training for Perl, PHP, Lua, etc
 
Tips for writing a test program (Ruby / Python / Java)

Where does my test code go?

If you've written a class - a series of methods to be used within another application - how do you test it? How about writing a test program within the same file which runs as the main program if you run your class on its own from the command line, but is ignored if you import / require your class from a higher level application.

In Ruby write your test code within the following condition:

if __FILE__ == $0

In Python, the condition should be written as follows:

if __name__ == "__main__":

And in Java, you can provide a main method in the class.

public static void main (String [] args) {

What goes in my test code?

I suggest that you create at least TWO instances of an object of the type that the class(es) in the file implement, putting fixed values for demonstration purposed in the file if you can so that the test isn't reliant on external data.

Put unique values into each object to that they can clearly seen to be different, and avoid "1"s which won't cause any change if you multiply by them, also avoid 0s, and giving sequences like 1,2,3,4,5 which won't flag up any errors if you use an index number rather than a value by mistake anywhere.

Having created two objects, use a service of methods to set and get attributes, building in tests of the functionality that your users need, and allowing you the chance to see what the interface to your code's going to look like from a user's viewpoint - in fact it's a good idea to write the tst code early.

Some languages have assert statments or whole test harness structures to let you write code which validates its own responses; use them as appropriate. In other cases, print out the results and also say what the results should be so that the tester / user KNOWS whether it has worked, and obviously, from running it.

What does the test code provide

A piece of code for YOU to test your class is functioning and complete when you have written it

A piece of code for you to test that you class is still functioning when you have modified it

A piece of code that lets your users check that your code is working AND that all dependencies have been met when they install or update it

A piece of code that helps you specify the API to your class

A piece of code that illustrates to your users how they may / should call the API that you have provided ... if you do it well / comment it well, it can form a basis of your documentation.

Examples

There is an example of a test harness in Ruby [here] (and that example, which shows you how the main OO features are implemented in Ruby is more fully dosumented [here].

There's a good Python example [here].
(written 2010-01-29, updated 2010-01-30)

 
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
J608 - Java - Naming Conventions and Code Management
  [2415] Variable names like i and j - why? - (2009-09-22)

J710 - Java - Extending Classes and More
  [4422] Objects - from physical to virtual or abstract - Java - (2015-02-10)
  [4419] Java Inheritance example - group of classes - step by step - (2015-02-08)
  [4394] Philosophy behind object design - and how I applied in to a Java example - (2015-01-14)
  [4366] Changing what operators do on objects - a comparison across different programming languages - (2014-12-26)
  [4334] Splitting out code into name blocks for clarity and reusability - (2014-11-30)
  [3047] What is a universal superclass? Java / Perl / Python / Other OO languages - (2010-11-13)
  [2860] What methods are available on this Java object? - (2010-07-08)
  [2434] Abstract classes, Interfaces, PHP and Java - (2009-10-03)
  [2185] Abstract Classes - Java - (2009-05-16)
  [1819] Calling base class constructors - (2008-10-03)
  [1556] Java - a demonstration of inheritance on just one page - (2008-02-26)
  [1538] Teaching Object Oriented Java with Students and Ice Cream - (2008-02-12)
  [1501] Java - using super to call a method in the parent class - (2008-01-10)
  [1294] An example of Java Inheritance from scratch - (2007-08-00)
  [1217] What are factory and singleton classes? - (2007-06-04)
  [1066] Final, Finally and Finalize - three special words in Java - (2007-02-05)
  [831] Comparison of Object Oriented Philosophy - Python, Java, C++, Perl - (2006-08-13)
  [656] Think about your design even if you don't use full UML - (2006-03-24)

R108 - Ruby - More Classes and Objects
  [4551] Testing your new class - first steps with cucumber - (2015-10-23)
  [4550] Build up classes into applications sharing data types in Ruby - (2015-10-23)
  [4504] Where does Ruby load modules from, and how to load from current directory - (2015-06-03)
  [3782] Standard methods available on all objects in Ruby - (2012-06-23)
  [3781] Private, Protected, Public in Ruby. What about interfaces and abstract classes in Ruby? - (2012-06-23)
  [3760] Why you should use objects even for short data manipulation programs in Ruby - (2012-06-10)
  [3260] Ruby - a training example that puts many language elements together to demonstrate the whole - (2011-04-23)
  [3158] Ruby training - some fresh examples for string handling applications - (2011-02-05)
  [3154] Changing a class later on - Ruby - (2011-02-02)
  [3142] Private and Public - and things between - (2011-01-22)
  [2980] Ruby - examples of regular expressions, inheritance and polymorphism - (2010-10-02)
  [2977] What is a factory method and why use one? - Example in Ruby - (2010-09-30)
  [2717] The Multiple Inheritance Conundrum, interfaces and mixins - (2010-04-11)
  [2623] Object Oriented Ruby - new examples - (2010-02-03)
  [2620] Direct access to object variable (attributes) in Ruby - (2010-02-02)
  [2616] Defining a static method - Java, Python and Ruby - (2010-02-01)
  [2603] Ruby objects - a primer - (2010-01-29)
  [2601] Ruby - is_a? v instance_of? - what is the difference? - (2010-01-27)
  [2292] Object Orientation in Ruby - intermediate examples - (2009-07-16)
  [1587] Some Ruby programming examples from our course - (2008-03-21)
  [184] MTBF of coffee machines - (2005-01-20)

R116 - Ruby - Security Issues.
  [945] Code quality counts - (2006-11-26)

Y106 - Object Oriented Python
  [4721] When to check an object type - Python isinstance example - (2016-11-03)
  [4650] Why populate object with values as you construct them? - (2016-02-18)
  [4591] From single block to structure and object oriented programming - (2015-12-02)
  [4448] What is the difference between a function and a method? - (2015-03-04)
  [4129] Simple OO demonstration in C++, comparison to Python - (2013-07-01)
  [4028] Really Simple Class and Inheritance example in Python - (2013-03-04)
  [4021] Spike solution, refactored and reusable, Python - Example - (2013-02-28)
  [3947] this or self - what are they, and what is the difference? (Python) - (2012-12-08)
  [3878] From Structured to Object Oriented Programming. - (2012-10-02)
  [3673] Object oriented or structured - a comparison in Python. Also writing clean regular expressions - (2012-03-26)
  [3436] Moving from scripting to Object Orientation in Python - (2011-09-13)
  [3399] From fish, loaves and apples to money, plastic cards and BACS (Perl references explained) - (2011-08-20)
  [3085] Object Oriented Programming for Structured Programmers - conversion training - (2010-12-14)
  [2169] When should I use OO techniques? - (2009-05-11)
  [2017] Python - a truly dynamic language - (2009-01-30)
  [1925] Introduction to Object Oriented Programming - (2008-12-06)
  [1348] Screw it or Glue it? Access to Object variables - a warning - (2007-09-12)
  [1306] Python class rattling around - (2007-08-16)
  [900] Python - function v method - (2006-10-20)
  [834] Python makes University Challenge - (2006-08-15)
  [477] Class, static and unbound variables - (2005-10-25)

Y116 - Python - Applying OO design techniques and best practise
  [4718] Defining an object that is a modified standard type in Python - (2016-11-02)
  [4359] How to avoid too many recalculations within an object - (2014-12-21)
  [4118] We not only teach PHP and Python - we teach good PHP and Python Practice! - (2013-06-18)
  [3887] Inheritance, Composition and Associated objects - when to use which - Python example - (2012-10-10)
  [2523] Plan your application before you start - (2009-12-02)
  [2485] How do I set up a constant in Python? - (2009-10-31)
  [2407] Testing code in Python - doctest, unittest and others - (2009-09-16)
  [2363] Alpaca Case or Camel Case - (2009-08-16)
  [1181] Good Programming practise - where to initialise variables - (2007-05-09)
  [836] Build on what you already have with OO - (2006-08-17)
  [668] Python - block insets help with documentation - (2006-04-04)
  [340] Code and code maintainance efficiency - (2005-06-08)


Back to
Ruby objects - a primer
Previous and next
or
Horse's mouth home
Forward to
Ruby on Rails - a sample application to teach you how
Some other Articles
Search and replace in Ruby - Ruby Regular Expressions
Answers on Ruby on Rails
Sorting arrays and hashes in Ruby
Ruby on Rails - a sample application to teach you how
Tips for writing a test program (Ruby / Python / Java)
East of Melksham - Building Work Starts
Go Programming Language and Courses?
Telling Apache web servers apart / notes for the non-technical
4759 posts, page by page
Link to page ... 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96 at 50 posts per page


This is a page archived from The Horse's Mouth at http://www.wellho.net/horse/ - the diary and writings of Graham Ellis. Every attempt was made to provide current information at the time the page was written, but things do move forward in our business - new software releases, price changes, new techniques. Please check back via our main site for current courses, prices, versions, etc - any mention of a price in "The Horse's Mouth" cannot be taken as an offer to supply at that price.

Link to Ezine home page (for reading).
Link to Blogging home page (to add comments).

You can Add a comment or ranking to this page

© WELL HOUSE CONSULTANTS LTD., 2019: 404 The Spa • Melksham, Wiltshire • United Kingdom • SN12 6QL
PH: 01225 708225 • EMAIL: info@wellho.net • WEB: http://www.wellho.net • SKYPE: wellho

PAGE: http://www.wellho.net/mouth/2604_Tip ... Java-.html • PAGE BUILT: Sat May 27 16:49:10 2017 • BUILD SYSTEM: WomanWithCat