Re: WOUnitTest

From: Brendan Duddridge (brenda..lickspace.com)
Date: Sun Sep 05 2004 - 15:12:23 EDT

  • Next message: Geoff Hopson: "Re: WOUnitTest"

    Hi Geoff,

    Thanks for the tip. I suspected that was the case, but the superclass of the
    setup method in WOUTTestCase seems to have code that should load in the
    models, but I don't think it goes far enough.

    The WOUTTestCase superclass has the following methods:

        /**
        * Loads the <code>EOModels</code>. Called by <code>setUp()</code>.
        */
        protected void loadEOModels() {
            EOModelGroup.defaultGroup();
        }

        /**
        * Sets up the fixture, for example, open a network connection.
        * This method is called before a test is executed.
        * When overriding, call <code>super</code> first.
        */
        protected void setUp() throws Exception {
            super.setUp();
            loadEOModels();
        }

    But I guess just calling EOModelGroup.defaultGroup() does not setup
    everything needed for testing.

    Would you be willing to share the code needed to setup testing properly?

    Thanks,

    ___________________________

    Brendan Duddridge

    ClickSpace Interactive Inc.
    Suite L100
    239 - 10th Ave SE
    Calgary, AB T2G 0V9
    Canada
    (403) 277-5591
    http://www.clickspace.com/

    > From: Geoff Hopson <ghopso..ac.com>
    > Date: Sun, 5 Sep 2004 20:03:19 +0100
    > To: Brendan Duddridge <brenda..lickspace.com>
    > Cc: "woproject-de..bjectstyle.org" <woproject-dev@objectstyle.org>
    > Subject: Re: WOUnitTest
    >
    > Just a guess - never used WOUnitTest - but you may have to load in
    > your eomodel and set up an EO stack in your setup method - it looks
    > like you are missing the whole thing that WOApplication does for you
    > when it starts up. I have written plain old JUnit tests that have had
    > to do this before...
    >
    > HTH,
    > Geoff
    >
    >
    >
    >
    > On 5 Sep 2004, at 18:13, Brendan Duddridge wrote:
    >
    >> Hi,
    >>
    >> Has anyone successfully used the WOUnitTest framework from within
    >> Eclipse by
    >> selecting Run as Junit Test from the Run menu?
    >>
    >> I can get it to work if I run the application and access the
    >> http://localhost/cgi-bin/WebObjects/TestApp.woa/wa/uta Direct Action,
    >> but if
    >> I just run as a Junit Test from within Eclipse, I get the following
    >> error:
    >>
    >> java.lang.IllegalStateException: Unabled to find an EOClassDescription
    >> for
    >> objects of class com.clickspace.driveit.dimodel.Address
    >> at
    >> com.webobjects.eocontrol.EOGenericRecord.__setClassDescription(EOGeneri
    >> cReco
    >> rd.java:98)
    >> at
    >> com.webobjects.eocontrol.EOGenericRecord.<init>(EOGenericRecord.java:
    >> 72)
    >> at com.clickspace.driveit.dimodel._Address.<init>(_Address.java:18)
    >> at com.clickspace.driveit.dimodel.Address.<init>(Address.java:17)
    >> at
    >> com.clickspace.driveit.tests.AddressTestCase.testCreateAddressFromConta
    >> ct(Ad
    >> dressTestCase.java:39)
    >> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    >> at
    >> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.ja
    >> va:39
    >> )
    >> at
    >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccesso
    >> rImpl
    >> .java:25)
    >> at java.lang.reflect.Method.invoke(Method.java:324)
    >> at junit.framework.TestCase.runTest(TestCase.java:154)
    >> at
    >> com.codefab.wounittest.WOUTTestCase.runBare(WOUTTestCase.java:82)
    >> at junit.framework.TestResult$1.protect(TestResult.java:106)
    >> at junit.framework.TestResult.runProtected(TestResult.java:124)
    >> at junit.framework.TestResult.run(TestResult.java:109)
    >> at junit.framework.TestCase.run(TestCase.java:118)
    >> at junit.framework.TestSuite.runTest(TestSuite.java:208)
    >> at junit.framework.TestSuite.run(TestSuite.java:203)
    >> at
    >> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteT
    >> estRu
    >> nner.java:421)
    >> at
    >> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRu
    >> nner.
    >> java:305)
    >> at
    >> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestR
    >> unner
    >> .java:186)
    >>
    >>
    >>
    >> Is there anything special that has to be done to get the tests to run
    >> like
    >> this? The code dies right on the line where I create a new Address
    >> object.
    >> Herešs my test case class:
    >>
    >> /*
    >> * Created on Sep 3, 2004
    >> */
    >> package com.clickspace.driveit.tests;
    >>
    >> import java.util.*;
    >>
    >> import com.clickspace.driveit.dimodel.*;
    >> import com.codefab.wounittest.*;
    >> import com.webobjects.eoaccess.*;
    >>
    >> /**
    >> *..uthor brendan
    >> */
    >> public class AddressTestCase extends WOUTTestCase {
    >>
    >> /*
    >> *..ee TestCase#setUp()
    >> */
    >> protected void setUp() throws Exception {
    >> super.setUp();
    >> }
    >>
    >> /*
    >> *..ee TestCase#tearDown()
    >> */
    >> protected void tearDown() throws Exception {
    >> super.tearDown();
    >> }
    >>
    >> public void testCreateAddressFromContact() {
    >> Address address = new Address(); // <--- Code dies here
    >> address.setPostalCode("T3A 5T4");
    >> editingContext.insertObject(address);
    >> assertInvalidForSave(address);
    >> assertValidForSave(address);
    >> }
    >>
    >> }
    >>
    >>
    >> Thanks,
    >>
    >> ___________________________
    >>
    >> Brendan Duddridge
    >>
    >> ClickSpace Interactive Inc.
    >> Suite L100
    >> 239 - 10th Ave SE
    >> Calgary, AB T2G 0V9
    >> Canada
    >> (403) 277-5591
    >> http://www.clickspace.com/
    >>
    >>
    >



    This archive was generated by hypermail 2.0.0 : Sun Sep 05 2004 - 15:12:44 EDT