Contents
Java test files generated by the StreamBase JUnit wizard are incomplete and must be edited to become a useful test. This topic provides guidelines for completing the edit of your generated StreamBase JUnit test files.
A generated JUnit test file includes:
- 
                  
One example tuple using generated test data for one input stream of the module to be tested.
 - 
                  
An
Expecterobject that defines a tuple for each of the module's output ports. 
              The generated JUnit test file includes a loadApp()
              line like the following example. This line is responsible for loading the specified
              application module into the test StreamBase Server.
            
server.loadApp("appname.sbapp");
            
              The line as generated loads the named module into a container named default. In this case, the StreamBase paths to the names of streams
              in your test code can be simple names without a container name, because StreamBase
              presumes a container named default if you don't specify
              a container. Thus, for a test of the Best Bids and Asks sample included with
              StreamBase, when using the default container, the
              following test code fragments are valid:
            
server.getEnqueuer("NYSE_Feed").enqueue( ...
...
new Expecter(server.getDequeuer("BestAsks"))
            
              You may have an application-specific reason to load your test module into a container
              other than default. To do this in your test code, add a
              container name as a second argument to the loadApp
              method, like the following example:
            
server.loadApp("appname.sbapp", "testcontainer");
            In this case, you must make sure that all StreamBase paths in the test file include the container name. For example:
server.getEnqueuer("testcontainer.NYSE_Feed").enqueue( ...
...
new Expecter(server.getDequeuer("testcontainer.BestAsks"))
          The same rule applies if you specify a non-default container name in a deployment file: you must make sure all StreamBase paths in the test file include the container name.
              For example, you might generate a test file to run the following simple deployment
              file, and you select the module in thedeploycontainer
              container in the Container application field of the New
              Unit Test Class dialog:
            
<?xml version="1.0" encoding="UTF-8"?>
<deploy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xsi:noNamespaceSchemaLocation="http://www.streambase.com/schemas/sbdeploy/">
    <runtime>
      <application container="default" module="BestBidsAsks.sbapp"/>
      <application container="deploycontainer" module="BestBidsAlt.sbapp"/>
    </runtime>
</deploy>
            
              In this case, the JUnit wizard automatically places the container name in the
              generated getEnqueuer() line:
            
server.getEnqueuer("deploycontainer.NYSE_Feed").enqueue( ...
            
              It is up to you to include the container name when you add further getEnqueuer() and getDequeuer()
              lines. For example:
            
...
new Expecter(server.getDequeuer("deploycontainer.BestAsks"))
...
new Expecter(server.getDequeuer("deploycontainer.BestBids"))
...
          
              You are not limited to the code generated by the wizard. For example, you might
              prefer to enqueue your input tuples constructed with ObjectArrayTupleMaker.MAKER instead of JSONSingleQuotesTupleMaker.MAKER.
            
If you need your test to reset the state of the module under test in preparation for further tests, your test code can include a passage like the following:
stopContainers(); startContainers();
              Use the Javadoc documentation for the com.streambase.sb.unittest package as a guide to the test features
              available. See Java API
              Documentation.
            
