Try reordering your application classpath and I guess moving Extensions Framework above will solve the problem. It happened to me a couple of times and I discovered it's related to loading the classes in specific order.
Farrukh Henrique Prange <[email protected]> wrote: >Hi Kevin, > >I'm not an expert on ERXValidation, but you're correct. The ERXLocalizer class >has not been initialized properly. Unfortunately, WOUnit doesn't load the >Properties file before the test execution as well as it doesn't provide means >for the ERXLocalizer to initialize properly. As a workaround, you can manually >load the Properties file and initialize the ERXLocalizer in a static method >annotated with @BeforeClass. > >I've created two issues [1] [2] and will take a closer look at this >requirement. > >[1]https://github.com/hprange/wounit/issues/24 >[2]https://github.com/hprange/wounit/issues/25 > >Cheers, > >Henrique > >On 15/12/2011, at 17:15, Kevin Hinkson wrote: > >> Hi everyone, >> >> I have a model framework that I am currently testing using WOUnit. For the >> Account EO I have a unit test to ensure that the email attribute is valid >> before saving. That worked fine until I started changing the code to be >> localizable. >> >> I have a ValidationTemplate.strings in the framework under Resources -> >> English.lproj -> ValidationTemplate.strings >> >> Values in the template >> { >> "EmailFormatException" = "A valid <b>@@displayNameForProperty@@</b> is >> required."; >> "Account.email.EmailFormatException" = >> "<b>@@displayNameForProperty@@</b> must be a valid email address."; >> } >> >> Properties set: >> >> # Localization >> er.extensions.ERXLocalizer.defaultLanguage=English >> er.extensions.ERXLocalizer.fileNamesToWatch=("Localizable.strings","ValidationTemplate.strings") >> er.extensions.ERXLocalizer.availableLanguages=(English) >> er.extensions.ERXLocalizer.frameworkSearchPath=(app,ERDirectToWeb,ERExtensions) >> er.extensions.ERXLocalizer.useLocalizedFormatters=true >> >> >> Validation code: >> >> public String validateEmail(String newEmail) { >> ERXValidationFactory factory = >> ERXValidationFactory.defaultFactory(); >> >> if (!Account.isValidEmail(newEmail)) { >> ERXValidationException exception = >> factory.createCustomException(this, Account.EMAIL_KEY, newEmail, >> "EmailFormatException"); >> throw exception; >> } >> >> return newEmail; >> } >> >> When I run the unit test for the Account EO I get a stack trace in the logs: >> >> - Undefined Validation Template entity "Account" property >> "EmailFormatException" type "CustomMethodException" target language "English" >> java.lang.Throwable >> at >> er.extensions.validation.ERXValidationFactory.templateForEntityPropertyType(ERXValidationFactory.java:554) >> at >> er.extensions.validation.ERXValidationFactory.templateForException(ERXValidationFactory.java:448) >> at >> er.extensions.validation.ERXValidationFactory.messageForException(ERXValidationFactory.java:394) >> at >> er.extensions.validation.ERXValidationException.getMessage(ERXValidationException.java:133) >> at >> com.wounit.matchers.CanBeSavedMatcher.describeTo(CanBeSavedMatcher.java:53) >> at >> org.hamcrest.BaseDescription.appendDescriptionOf(BaseDescription.java:21) >> at com.wounit.matchers.EOAssert.confirmImplementation(EOAssert.java:253) >> at com.wounit.matchers.EOAssert.confirm(EOAssert.java:216) >> at >> com.coralstone.envoy.modeltests.AccountTest.cannotSaveInvalidEmail(AccountTest.java:61) >> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) >> at >> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) >> at >> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) >> at java.lang.reflect.Method.invoke(Method.java:597) >> at >> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44) >> at >> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) >> at >> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41) >> at >> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) >> at >> com.wounit.rules.AbstractEditingContextRule$1.evaluate(AbstractEditingContextRule.java:141) >> at >> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:76) >> at >> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50) >> at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193) >> at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52) >> at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191) >> at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42) >> at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184) >> at org.junit.runners.ParentRunner.run(ParentRunner.java:236) >> at >> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) >> at >> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) >> at >> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) >> at >> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) >> at >> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) >> at >> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) >> >> >> It looks to me as if maybe the validation template cannot be found but I'm >> not certain what would cause that. Possibly there is something I need to >> load before running the test? Does anyone know what that might be? >> >> — Kevin Hinkson. >> >> _______________________________________________ >> Do not post admin requests to the list. They will be ignored. >> Webobjects-dev mailing list ([email protected]) >> Help/Unsubscribe/Update your Subscription: >> http://lists.apple.com/mailman/options/webobjects-dev/hprange%40gmail.com >> >> This email sent to [email protected] > > > _______________________________________________ >Do not post admin requests to the list. They will be ignored. >Webobjects-dev mailing list ([email protected]) >Help/Unsubscribe/Update your Subscription: >http://lists.apple.com/mailman/options/webobjects-dev/farrukh.ijaz%40fuegodigitalmedia.com > >This email sent to [email protected]
_______________________________________________ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list ([email protected]) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to [email protected]
