JsTestDriver doesn't catch undefined function inside AssertEquals; Declares Test as passing

115 views
Skip to first unread message

Mieczysław Daniel Dyba

unread,
May 10, 2013, 8:11:35 PM5/10/13
to js-test...@googlegroups.com
Here is the simple test I wrote:

// test/apply_test.js

TestCase("ApplyTest", {
    "using null on sum returns correct sum": function() {
        assertEquals(15, aoeuhtns(1, 2, 3, 4, 5));
        assertEquals(15, sum(1, 2, 3, 4, 5));
        assertEquals(15, sum.apply(null, [1, 2, 3, 4, 5, 6]));
    }
});

Running this test produces this output on the Terminal:

$ java -jar /usr/local/Cellar/js-test-driver/1.3.5/libexec/JsTestDriver-1.3.5.jar --tests all
setting runnermode QUIET
.
Total 1 tests (Passed: 1; Fails: 0; Errors: 0) (2.00 ms)
  Chrome 26.0.1410.65 Mac OS: Run 1 tests (Passed: 1; Fails: 0; Errors 0) (2.00 ms)

Why does the test pass when I have not defined the 'aoeuhtns' function?

Mieczysław Daniel Dyba

unread,
May 10, 2013, 9:14:56 PM5/10/13
to js-test...@googlegroups.com
Here is my jstestdriver.conf file:


load:
  - src/*.js
  - test/*.js

Previously it had been:


load:
  - src/*.js

test:
  - test/*.js

But I still get the same problem. I thought I was doing something wrong with loading the files under the correct category.

I double checked my work:
  • Has the server been started? Yes.
  • Has the browser been captured? Yes. (It was captured in regular mode)
  • Does the browser report the server as waiting? Yes.
  • Is the file being tested loaded by the runner? Yes. See the bolded line below. There was a typo in my earlier post: The file name is apply_examples_test.js and not apply_test.js
Also here is the debug output from the runner:

$ java -jar /usr/local/Cellar/js-test-driver/1.3.5/libexec/JsTestDriver-1.3.5.jar --tests all --runnerMode DEBUG
setting runnermode DEBUG
May 10, 2013 5:45:36 PM com.google.jstestdriver.JsTestDriverModule configure
FINE: Configured with:
flags:FlagsImpl [port=-1,
 sslPort=-1,
 server=null,
 testOutput=,
 browser=[],
 reset=false,
 browserTimeout=30000,
 config=DefaultConfigurationSource [name=jsTestDriver.conf],
 tests=[all],
 displayHelp=false,
 verbose=false,
 captureConsole=false,
 preloadFiles=false,
 dryRunFor=[],
 arguments=[],
 runnerMode=QUIET,
 requiredBrowsers=null,
 serverHandlerPrefix=com.google.jstestdriver.model.NullPathPrefix@c68c26c
 raiseOnFailure=false]
Files:[
FileInfo [filePath=/Users/danieldyba/JavaScript/test-driven-javascript/./src/apply_examples.js, length=-1, patches=null, serveOnly=false, timestamp=1368229011000],
FileInfo [filePath=/Users/danieldyba/JavaScript/test-driven-javascript/./src/greeter.js, length=-1, patches=null, serveOnly=false, timestamp=1368145869000],
FileInfo [filePath=/Users/danieldyba/JavaScript/test-driven-javascript/./test/apply_examples_test.js, length=-1, patches=null, serveOnly=false, timestamp=1368231402000],
FileInfo [filePath=/Users/danieldyba/JavaScript/test-driven-javascript/./test/greeter_test.js, length=-1, patches=null, serveOnly=false, timestamp=1368150128000]]
captureAddress:http://localhost:9876
outputStream:java.io.PrintStream@31b446d1
basePath:BasePaths [paths=[/Users/danieldyba/JavaScript/test-driven-javascript/.]]
testSuiteTimeout:7200
tests:[]
plugins:[]
gateway:[]
May 10, 2013 5:45:36 PM com.google.jstestdriver.model.JstdTestCaseFactory createCases
FINE: creating default test case
May 10, 2013 5:45:36 PM com.google.jstestdriver.ActionRunner runActions
INFO: TestCases 1
May 10, 2013 5:45:36 PM com.google.jstestdriver.ActionRunner runActions
INFO: Running com.google.jstestdriver.action.ConfigureGatewayAction@769aba32
May 10, 2013 5:45:36 PM com.google.jstestdriver.ActionRunner runActions
INFO: Finished com.google.jstestdriver.action.ConfigureGatewayAction@769aba32
May 10, 2013 5:45:36 PM com.google.jstestdriver.ActionRunner runActions
INFO: Running com.google.jstestdriver.action.UploadAction@293b9fae
May 10, 2013 5:45:37 PM com.google.jstestdriver.ActionRunner runActions
INFO: Finished com.google.jstestdriver.action.UploadAction@293b9fae
May 10, 2013 5:45:37 PM com.google.jstestdriver.ActionRunner runActions
INFO: Running com.google.jstestdriver.browser.BrowserActionExecutorAction@6e4bb3c
May 10, 2013 5:45:37 PM com.google.jstestdriver.browser.BrowserActionExecutorAction run
FINE: Queueing BrowserActionRunner [com.google.jstestdriver.RunTestsAction@56e2ecc7] for Chrome 26.0.1410.65 Mac OS.
May 10, 2013 5:45:37 PM com.google.jstestdriver.browser.BrowserActionRunner call
FINE: start session on 1368232339636 with id e8966095-3831-4b3a-9028-79231844c6de
May 10, 2013 5:45:37 PM com.google.jstestdriver.browser.BrowserActionRunner call
INFO: Running BrowserAction com.google.jstestdriver.RunTestsAction@56e2ecc7 with JstdTestCase ([dependencies=[
FileInfo [filePath=/Users/danieldyba/JavaScript/test-driven-javascript/./src/apply_examples.js, length=-1, patches=null, serveOnly=false, timestamp=1368229011000],
FileInfo [filePath=/Users/danieldyba/JavaScript/test-driven-javascript/./src/greeter.js, length=-1, patches=null, serveOnly=false, timestamp=1368145869000],
FileInfo [filePath=/Users/danieldyba/JavaScript/test-driven-javascript/./test/apply_examples_test.js, length=-1, patches=null, serveOnly=false, timestamp=1368231402000],
FileInfo [filePath=/Users/danieldyba/JavaScript/test-driven-javascript/./test/greeter_test.js, length=-1, patches=null, serveOnly=false, timestamp=1368150128000]], plugins=[], tests=[],id=default]
May 10, 2013 5:45:37 PM com.google.jstestdriver.output.MultiTestResultListener <init>
FINE: listener:com.google.jstestdriver.output.MultiTestResultListener@53dafbaf delegates: [com.google.jstestdriver.output.TestResultHolder@77bf7b23, com.google.jstestdriver.output.DefaultListener@288b567c]
May 10, 2013 5:45:37 PM com.google.jstestdriver.RunTestsActionResponseStream <init>
FINE: listener for tests com.google.jstestdriver.output.MultiTestResultListener@53dafbaf
May 10, 2013 5:45:37 PM com.google.jstestdriver.CommandTask run
INFO: run default
May 10, 2013 5:45:37 PM com.google.jstestdriver.CommandTask run
FINE: Starting upload for 1368232339636
May 10, 2013 5:45:37 PM com.google.jstestdriver.FileUploader determineBrowserFileSet
FINE: Updating files []
May 10, 2013 5:45:37 PM com.google.jstestdriver.FileUploader uploadToTheBrowser
INFO: Files toupload []
May 10, 2013 5:45:37 PM com.google.jstestdriver.CommandTask run
FINE: Finished upload for 1368232339636
May 10, 2013 5:45:37 PM com.google.jstestdriver.CommandTask run
FINE: Starting {"command":"runTests","parameters":["[\"all\"]","false","1"]} for 1368232339636
.May 10, 2013 5:45:37 PM com.google.jstestdriver.CommandTask run
FINE: finished {"command":"runTests","parameters":["[\"all\"]","false","1"]} for 1368232339636 with TEST_RESULT
May 10, 2013 5:45:37 PM com.google.jstestdriver.CommandTask run
FINE: finished {"command":"runTests","parameters":["[\"all\"]","false","1"]} for 1368232339636
May 10, 2013 5:45:37 PM com.google.jstestdriver.browser.BrowserActionRunner call
FINE: stopping session on 1368232339636 with id e8966095-3831-4b3a-9028-79231844c6de
May 10, 2013 5:45:37 PM com.google.jstestdriver.browser.BrowserActionExecutorAction run
FINE: Finished BrowserActions [com.google.jstestdriver.RunTestsAction@56e2ecc7].

Total 1 tests (Passed: 1; Fails: 0; Errors: 0) (0.00 ms)
  Chrome 26.0.1410.65 Mac OS: Run 1 tests (Passed: 1; Fails: 0; Errors 0) (0.00 ms)
May 10, 2013 5:45:37 PM com.google.jstestdriver.ActionRunner runActions
INFO: Finished com.google.jstestdriver.browser.BrowserActionExecutorAction@6e4bb3c
May 10, 2013 5:45:37 PM com.google.jstestdriver.ActionRunner runActions
INFO:
May 10, 2013 5:45:37 PM com.google.jstestdriver.Main main
INFO: Finished action run.

Mieczysław Daniel Dyba

unread,
May 10, 2013, 10:26:04 PM5/10/13
to js-test...@googlegroups.com
Now this is interesting. I'm going to change my test file to the following:

ApplyTest = TestCase("ApplyTest");

ApplyTest.prototype.testInvalidMethod = function() {
    assertEquals(15, aoeuhtns(1, 2, 3, 4, 5));
};

// TestCase("ApplyTest", {
//     "using null on sum returns correct sum": function() {
//         assertEquals(15, mwvz(1, 2, 3, 4, 5));
//     }
// });

Now when I run the test I get this:

$ java -jar /usr/local/Cellar/js-test-driver/1.3.5/libexec/JsTestDriver-1.3.5.jar --tests all --runnerMode DEBUG
setting runnermode DEBUG
May 10, 2013 7:14:45 PM com.google.jstestdriver.JsTestDriverModule configure
FINE: Configured with:
flags:FlagsImpl [port=-1,
 sslPort=-1,
 server=null,
 testOutput=,
 browser=[],
 reset=false,
 browserTimeout=30000,
 config=DefaultConfigurationSource [name=jsTestDriver.conf],
 tests=[all],
 displayHelp=false,
 verbose=false,
 captureConsole=false,
 preloadFiles=false,
 dryRunFor=[],
 arguments=[],
 runnerMode=QUIET,
 requiredBrowsers=null,
 serverHandlerPrefix=com.google.jstestdriver.model.NullPathPrefix@1fa12495
 raiseOnFailure=false]
Files:[
FileInfo [filePath=/Users/danieldyba/JavaScript/test-driven-javascript/./src/apply_examples.js, length=-1, patches=null, serveOnly=false, timestamp=1368229011000],
FileInfo [filePath=/Users/danieldyba/JavaScript/test-driven-javascript/./src/greeter.js, length=-1, patches=null, serveOnly=false, timestamp=1368145869000]]
outputStream:java.io.PrintStream@c68c26c
basePath:BasePaths [paths=[/Users/danieldyba/JavaScript/test-driven-javascript/.]]
testSuiteTimeout:7200
tests:[
FileInfo [filePath=/Users/danieldyba/JavaScript/test-driven-javascript/./test/apply_examples_test.js, length=-1, patches=null, serveOnly=false, timestamp=1368238474000],
FileInfo [filePath=/Users/danieldyba/JavaScript/test-driven-javascript/./test/greeter_test.js, length=-1, patches=null, serveOnly=false, timestamp=1368150128000]]
plugins:[]
gateway:[]
May 10, 2013 7:14:45 PM com.google.jstestdriver.model.JstdTestCaseFactory createCases
FINE: creating default test case
May 10, 2013 7:14:45 PM com.google.jstestdriver.ActionRunner runActions
INFO: TestCases 1
May 10, 2013 7:14:45 PM com.google.jstestdriver.ActionRunner runActions
INFO: Running com.google.jstestdriver.action.ConfigureGatewayAction@b3e75a5
May 10, 2013 7:14:45 PM com.google.jstestdriver.ActionRunner runActions
INFO: Finished com.google.jstestdriver.action.ConfigureGatewayAction@b3e75a5
May 10, 2013 7:14:45 PM com.google.jstestdriver.ActionRunner runActions
INFO: Running com.google.jstestdriver.action.UploadAction@9706da8
May 10, 2013 7:14:45 PM com.google.jstestdriver.ActionRunner runActions
INFO: Finished com.google.jstestdriver.action.UploadAction@9706da8
May 10, 2013 7:14:45 PM com.google.jstestdriver.ActionRunner runActions
INFO: Running com.google.jstestdriver.browser.BrowserActionExecutorAction@1278dc4c
May 10, 2013 7:14:45 PM com.google.jstestdriver.browser.BrowserActionExecutorAction run
FINE: Queueing BrowserActionRunner [com.google.jstestdriver.RunTestsAction@345c98f3] for Chrome 26.0.1410.65 Mac OS.
May 10, 2013 7:14:45 PM com.google.jstestdriver.browser.BrowserActionRunner call
FINE: start session on 1368235238649 with id 9d931bc5-b9d3-410a-866c-ab1bb1ae36a4
May 10, 2013 7:14:45 PM com.google.jstestdriver.browser.BrowserActionRunner call
INFO: Running BrowserAction com.google.jstestdriver.RunTestsAction@345c98f3 with JstdTestCase ([dependencies=[
FileInfo [filePath=/Users/danieldyba/JavaScript/test-driven-javascript/./src/apply_examples.js, length=-1, patches=null, serveOnly=false, timestamp=1368229011000],
FileInfo [filePath=/Users/danieldyba/JavaScript/test-driven-javascript/./src/greeter.js, length=-1, patches=null, serveOnly=false, timestamp=1368145869000]], plugins=[], tests=[
FileInfo [filePath=/Users/danieldyba/JavaScript/test-driven-javascript/./test/apply_examples_test.js, length=-1, patches=null, serveOnly=false, timestamp=1368238474000],
FileInfo [filePath=/Users/danieldyba/JavaScript/test-driven-javascript/./test/greeter_test.js, length=-1, patches=null, serveOnly=false, timestamp=1368150128000]],id=default]
May 10, 2013 7:14:45 PM com.google.jstestdriver.output.MultiTestResultListener <init>
FINE: listener:com.google.jstestdriver.output.MultiTestResultListener@8497904 delegates: [com.google.jstestdriver.output.TestResultHolder@19de0b5e, com.google.jstestdriver.output.DefaultListener@10987197]
May 10, 2013 7:14:45 PM com.google.jstestdriver.RunTestsActionResponseStream <init>
FINE: listener for tests com.google.jstestdriver.output.MultiTestResultListener@8497904
May 10, 2013 7:14:45 PM com.google.jstestdriver.CommandTask run
INFO: run default
May 10, 2013 7:14:45 PM com.google.jstestdriver.CommandTask run
FINE: Starting upload for 1368235238649
May 10, 2013 7:14:45 PM com.google.jstestdriver.FileUploader determineBrowserFileSet
FINE: Updating files [
FileInfo [filePath=/Users/danieldyba/JavaScript/test-driven-javascript/./test/apply_examples_test.js, length=-1, patches=null, serveOnly=false, timestamp=1368238474000]]
May 10, 2013 7:14:45 PM com.google.jstestdriver.FileUploader uploadToTheBrowser
INFO: Files toupload [
test/apply_examples_test.js,
test/greeter_test.js]
May 10, 2013 7:14:45 PM com.google.jstestdriver.FileUploader uploadToTheBrowser
FINE: Sending LOADTEST to 1368235238649 for [
/test/test/apply_examples_test.js,
/test/test/greeter_test.js]
May 10, 2013 7:14:45 PM com.google.jstestdriver.FileUploader uploadToTheBrowser
FINE: Finished LOADTEST on 1368235238649 with FILE_LOAD_RESULT
May 10, 2013 7:14:45 PM com.google.jstestdriver.CommandTask run
FINE: Finished upload for 1368235238649
May 10, 2013 7:14:45 PM com.google.jstestdriver.CommandTask run
FINE: Starting {"command":"runTests","parameters":["[\"all\"]","false","1"]} for 1368235238649
E.May 10, 2013 7:14:45 PM com.google.jstestdriver.CommandTask run
FINE: finished {"command":"runTests","parameters":["[\"all\"]","false","1"]} for 1368235238649 with TEST_RESULT
May 10, 2013 7:14:45 PM com.google.jstestdriver.CommandTask run
FINE: finished {"command":"runTests","parameters":["[\"all\"]","false","1"]} for 1368235238649
May 10, 2013 7:14:45 PM com.google.jstestdriver.browser.BrowserActionRunner call
FINE: stopping session on 1368235238649 with id 9d931bc5-b9d3-410a-866c-ab1bb1ae36a4
May 10, 2013 7:14:45 PM com.google.jstestdriver.browser.BrowserActionExecutorAction run
FINE: Finished BrowserActions [com.google.jstestdriver.RunTestsAction@345c98f3].

Total 2 tests (Passed: 1; Fails: 0; Errors: 1) (1.00 ms)
  Chrome 26.0.1410.65 Mac OS: Run 2 tests (Passed: 1; Fails: 0; Errors 1) (1.00 ms)
    ApplyTest.testInvalidMethod error (1.00 ms): ReferenceError: aoeuhtns is not defined
      ReferenceError: aoeuhtns is not defined
          at ApplyTest.testInvalidMethod (http://localhost:9876/test/test/apply_examples_test.js:4:22)

May 10, 2013 7:14:45 PM com.google.jstestdriver.ActionRunner runActions
INFO: Finished com.google.jstestdriver.browser.BrowserActionExecutorAction@1278dc4c
May 10, 2013 7:14:45 PM com.google.jstestdriver.ActionRunner runActions
INFO:
May 10, 2013 7:14:45 PM com.google.jstestdriver.Main main
INFO: Finished action run.

Now we are talking! So it looks like the test doesn't understand the syntax I wrote earlier. I would really like to take a crack at fixing this. Unfortunately I don't know Java very well. I also missed out on a special Manning had on a Java Fundamentals I and II video series that was 70% off! Perhaps another day. For now, I suppose I will stick to the documented syntax, unless someone decides to add this functionality.

Mieczysław Daniel Dyba

unread,
May 10, 2013, 10:57:36 PM5/10/13
to js-test...@googlegroups.com
Ok, ok. Now I really grok this. The test below will pass because the string "not something simple" doesn't begin with "test".

TestCase("Another Test", {
    "not something simple": function() {
        assertEquals(15, aoeuhtns(1, 2));
    }
});

The Terminal says:

Total 1 tests (Passed: 1; Fails: 0; Errors: 0) (0.00 ms)
  Chrome 26.0.1410.65 Mac OS: Run 1 tests (Passed: 1; Fails: 0; Errors 0) (0.00 ms)

We should prepend the string with "test" in order for it to work properly:

TestCase("Another Test", {
    "test something simple": function() {
        assertEquals(15, aoeuhtns(1, 2));
    }
});

Now the Terminal says:

Total 2 tests (Passed: 1; Fails: 0; Errors: 1) (0.00 ms)
  Chrome 26.0.1410.65 Mac OS: Run 2 tests (Passed: 1; Fails: 0; Errors 1) (0.00 ms)
    Another Test.test something simple error (0.00 ms): ReferenceError: aoeuhtns is not defined
      ReferenceError: aoeuhtns is not defined
          at Object.TestCase.test something simple (http://localhost:9876/test/test/apply_examples_test.js:21:26
Reply all
Reply to author
Forward
0 new messages