'"java.lang.IllegalStateException: TableMetadataFactory cannot be used before it is started" running Gunit tests

When running Gunit tests for ClaimCenter using the following command and tomcat running we get an error related to the TableMetaDataFactory.

call ant -f Gunittestingtasks.xml rungunitReport -Dgunit.test.packages=com.lmig.pm.cl.cc.plugins >> d:\tmp\gunit.txt

Below is the full stack trace of a single error out of the Gunit test report XML file.

<testcase classname="com.lmig.claims.assignment.AssignmentFactoryTest" gosu="true" name="testAssignmentRepoInstantiation" time="0.013">
    <error message="java.lang.IllegalStateException: TableMetadataFactory Caused by: java.lang.LinkageError type="java.lang.RuntimeException">java.lang.RuntimeException: java.lang.IllegalStateException: TableMetadataFactory cannot be used before it is started
    at gw.testharness.v3.PLServerTestEnvironment.beforeTestSuite(PLServerTestEnvironment.java:50)
    at com.guidewire.api.test.TestExecutionManager.maybeCallBeforeTestSuite(TestExecutionManager.java:206)
    at com.guidewire.api.test.TestExecutionManager.runTestClass(TestExecutionManager.java:115)
    at gw.api.test.TestClass.run(TestClass.java:318)
    at com.guidewire.api.test.TestClassWrapper.runTest(TestClassWrapper.java:48)
    at gw.test.Suite.run(Suite.java:385)
Caused by: java.lang.IllegalStateException: TableMetadataFactory cannot be used before it is started
    at com.guidewire.pl.system.database.metadata.TableMetadataFactoryImpl.getTableMetadata(TableMetadataFactoryImpl.java:78)
    at com.guidewire.pl.system.database.metadata.TableMetadataFactoryImpl.getColumn(TableMetadataFactoryImpl.java:102)
    at com.guidewire.pl.system.database.impl.ForwardJoinCondition.&lt;init&gt;(ForwardJoinCondition.java:40)
    at com.guidewire.pl.system.database.impl.TableObjectImpl.join(TableObjectImpl.java:225)
    at com.guidewire.pl.domain.community.impl.AbstractUserFinder.getCredentialQuery(AbstractUserFinder.java:193)
    at com.guidewire.pl.domain.community.impl.AbstractUserFinder.findByCredentialName(AbstractUserFinder.java:82)
    at com.guidewire.pl.domain.community.impl.AbstractUserFinder.findSystemUser(AbstractUserFinder.java:53)
    at com.guidewire.pl.system.security.impl.SuperUserIdentifierImpl.initIfNecessary(SuperUserIdentifierImpl.java:61)
    at com.guidewire.pl.system.security.impl.SuperUserIdentifierImpl.getSystemServicesUserId(SuperUserIdentifierImpl.java:54)
    at gw.testharness.v3.PLServerTestEnvironment.executeBeforeBackUpDatabase(PLServerTestEnvironment.java:73)
    at gw.testharness.v3.PLServerTestEnvironment.afterServerStarted(PLServerTestEnvironment.java:55)
    at gw.testharness.v3.PLServerTestEnvironment.beforeTestSuite(PLServerTestEnvironment.java:48)
</error>
    <error message="java.lang.IllegalStateException: TableMetadataFactory cannot be used before it is started" type="java.lang.RuntimeException">java.lang.RuntimeException: java.lang.IllegalStateException: TableMetadataFactory cannot be used before it is started
    at gw.testharness.v3.PLServerTestEnvironment.beforeTestSuite(PLServerTestEnvironment.java:50)
    at com.guidewire.api.test.TestExecutionManager.maybeCallBeforeTestSuite(TestExecutionManager.java:206)
    at com.guidewire.api.test.TestExecutionManager.runTestClass(TestExecutionManager.java:115)
    at gw.api.test.TestClass.run(TestClass.java:318)
    at com.guidewire.api.test.TestClassWrapper.runTest(TestClassWrapper.java:48)
    at gw.test.Suite.run(Suite.java:385)
Caused by: java.lang.IllegalStateException: TableMetadataFactory cannot be used before it is started
    at com.guidewire.pl.system.database.metadata.TableMetadataFactoryImpl.getTableMetadata(TableMetadataFactoryImpl.java:78)
    at com.guidewire.pl.system.database.metadata.TableMetadataFactoryImpl.getColumn(TableMetadataFactoryImpl.java:102)
    at com.guidewire.pl.system.database.impl.ForwardJoinCondition.&lt;init&gt;(ForwardJoinCondition.java:40)
    at com.guidewire.pl.system.database.impl.TableObjectImpl.join(TableObjectImpl.java:225)
    at com.guidewire.pl.domain.community.impl.AbstractUserFinder.getCredentialQuery(AbstractUserFinder.java:193)
    at com.guidewire.pl.domain.community.impl.AbstractUserFinder.findByCredentialName(AbstractUserFinder.java:82)
    at com.guidewire.pl.domain.community.impl.AbstractUserFinder.findSystemUser(AbstractUserFinder.java:53)
    at com.guidewire.pl.system.security.impl.SuperUserIdentifierImpl.initIfNecessary(SuperUserIdentifierImpl.java:61)
    at com.guidewire.pl.system.security.impl.SuperUserIdentifierImpl.getSystemServicesUserId(SuperUserIdentifierImpl.java:54)
    at gw.testharness.v3.PLServerTestEnvironment.executeBeforeBackUpDatabase(PLServerTestEnvironment.java:73)
    at gw.testharness.v3.PLServerTestEnvironment.afterServerStarted(PLServerTestEnvironment.java:55)
    at gw.testharness.v3.PLServerTestEnvironment.beforeTestSuite(PLServerTestEnvironment.java:48)
</error>
  </testcase>

All of the errors are coming from that issue for all of the GUnit tests

Not sure if it's a context.xml issue with configuration or something else at this point.


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source