Previous page: Target objects Next page: Symbols Parent page: Important concepts
System under test
DoFixture and SequenceFixture can be used to automate testing of your business domain classes directly, without the need to redeclare or wrap the business class methods in a fixture. That feature is called System under test. In Java, call the setSystemUnderTest method and pass your business domain object. In .NET, assign the business object to the mySystemUnderTest property. Note that generic (template) classes cannot be used for this purpose in Java, because FIT will fail to find the appropriate class parameters and try to use Object arguments for all methods.Even when the system under test is defined, you can still call methods of the fixture in your tests. If there is no appropriate method of the fixture, FIT looks for an appropriate method in the system under test. Here is an example that works with standard .NET queues (to make it work with Java, we have to wrap the generic Queue interface into a non-generic class).
!|SystemUnderTest| |Enqueue|directly calling queue| |check|count|1| |Generate|12|Messages| |check|count|13| |check|dequeue|directly calling queue|
Java Source Code
package info.fitnesse.fixturegallery; import fitlibrary.DoFixture; import info.fitnesse.fixturegallery.domain.*; public class SystemUnderTest extends DoFixture{ Queue queue; public SystemUnderTest (){ queue=new Queue(); setSystemUnderTest(queue); } public void generateMessages(int i){ for (int cnt=0; cnt<i;cnt++){ queue.enqueue("M"+i); } } }
.NET Source Code
using System; using System.Collections.Generic; using System.Text; namespace info.fitnesse.fixturegallery { public class SystemUnderTest: fitlibrary.DoFixture { Queue<string> queue = new Queue<string>(); public SystemUnderTest() { this.mySystemUnderTest = queue; } public void GenerateMessages(int howmuch) { for (int i = 0; i < howmuch; i++) queue.Enqueue("M" + i); } } }
Python Source Code
from fitLib.DoFixture import DoFixture from info.fitnesse.fixturegallery.domain.Queue import Queue class SystemUnderTest(DoFixture): _typeDict = { # -- NEEDED-FOR: SystemUnderTestExample "GenerateMessages.RenameTo": "generateMessages" } def __init__(self): self.queue = Queue() self.setSystemUnderTest(self.queue) _typeDict["generateMessages.types"] = [ None, "Integer" ] def generateMessages(self, i): for dummy in xrange(i): self.queue.enqueue("M%d" % i)
Previous page: Target objects Next page: Symbols Parent page: Important concepts