123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400 |
- Simple Test interface changes
- =============================
- Because the SimpleTest tool set is still evolving it is likely that tests
- written with earlier versions will fail with the newest ones. The most
- dramatic changes are in the alpha releases. Here is a list of possible
- problems and their fixes...
- assertText() no longer finds a string inside a <script> tag
- -----------------------------------------------------------
- The assertText() method is intended to match only visible,
- human-readable text on the web page. Therefore, the contents of script
- tags should not be matched by this assertion. However there was a bug
- in the text normalisation code of simpletest which meant that <script>
- tags spanning multiple lines would not have their content stripped
- out. If you want to check the content of a <script> tag, use
- assertPattern(), or write a custom expectation.
- Overloaded method not working
- -----------------------------
- All protected and private methods had underscores
- removed. This means that any private/protected methods that
- you overloaded with those names need to be updated.
- Fatal error: Call to undefined method Classname::classname()
- ------------------------------------------------------------
- SimpleTest renamed all of its constructors from
- Classname to __construct; derived classes invoking
- their parent constructors should replace parent::Classname()
- with parent::__construct().
- Custom CSS in HtmlReporter not being applied
- --------------------------------------------
- Batch rename of protected and private methods
- means that _getCss() was renamed to getCss().
- Please rename your method and it should work again.
- setReturnReference() throws errors in E_STRICT
- ----------------------------------------------
- Happens when an object is passed by reference.
- This also happens with setReturnReferenceAt().
- If you want to return objects then replace these
- with calls to returns() and returnsAt() with the
- same arguments. This change was forced in the 1.1
- version for E_STRICT compatibility.
- assertReference() throws errors in E_STRICT
- -------------------------------------------
- Due to language restrictions you cannot compare
- both variables and objects in E_STRICT mode. Use
- assertSame() in this mode with objects. This change
- was forced the 1.1 version.
- Cannot create GroupTest
- -----------------------
- The GroupTest has been renamed TestSuite (see below).
- It was removed completely in 1.1 in favour of this
- name.
- No method getRelativeUrls() or getAbsoluteUrls()
- ------------------------------------------------
- These methods were always a bit weird anyway, and
- the new parsing of the base tag makes them more so.
- They have been replaced with getUrls() instead. If
- you want the old functionality then simply chop
- off the current domain from getUrls().
- Method setWildcard() removed in mocks
- -------------------------------------
- Even setWildcard() has been removed in 1.0.1beta now.
- If you want to test explicitely for a '*' string, then
- simply pass in new IdenticalExpectation('*') instead.
- No method _getTest() on mocks
- -----------------------------
- This has finally been removed. It was a pretty esoteric
- flex point anyway. It was there to allow the mocks to
- work with other test tools, but no one does this.
- No method assertError(), assertNoErrors(), swallowErrors()
- ----------------------------------------------------------
- These have been deprecated in 1.0.1beta in favour of
- expectError() and expectException(). assertNoErrors() is
- redundant if you use expectError() as failures are now reported
- immediately.
- No method TestCase::signal()
- ----------------------------
- This has been deprecated in favour of triggering an error or
- throwing an exception. Deprecated as of 1.0.1beta.
- No method TestCase::sendMessage()
- ---------------------------------
- This has been deprecated as of 1.0.1beta.
- Failure to connect now emits failures
- -------------------------------------
- It used to be that you would have to use the
- getTransferError() call on the web tester to see if
- there was a socket level error in a fetch. This check
- is now always carried out by the WebTestCase unless
- the fetch is prefaced with WebTestCase::ignoreErrors().
- The ignore directive only lasts for the next fetching
- action such as get() and click().
- No method SimpleTestOptions::ignore()
- -------------------------------------
- This is deprecated in version 1.0.1beta and has been moved
- to SimpleTest::ignore() as that is more readable. In
- addition, parent classes are also ignored automatically.
- If you are using PHP5 you can skip this directive simply
- by marking your test case as abstract.
- No method assertCopy()
- ----------------------
- This is deprecated in 1.0.1 in favour of assertClone().
- The assertClone() method is slightly different in that
- the objects must be identical, but without being a
- reference. It is thus not a strict inversion of
- assertReference().
- Constructor wildcard override has no effect in mocks
- ----------------------------------------------------
- As of 1.0.1beta this is now set with setWildcard() instead
- of in the constructor.
- No methods setStubBaseClass()/getStubBaseClass()
- ------------------------------------------------
- As mocks are now used instead of stubs, these methods
- stopped working and are now removed as of the 1.0.1beta
- release. The mock objects may be freely used instead.
- No method addPartialMockCode()
- ------------------------------
- The ability to insert arbitrary partial mock code
- has been removed. This was a low value feature
- causing needless complications. It was removed
- in the 1.0.1beta release.
- No method setMockBaseClass()
- ----------------------------
- The ability to change the mock base class has been
- scheduled for removal and is deprecated since the
- 1.0.1beta version. This was a rarely used feature
- except as a workaround for PHP5 limitations. As
- these limitations are being resolved it's hoped
- that the bundled mocks can be used directly.
- No class Stub
- -------------
- Server stubs are deprecated from 1.0.1 as the mocks now
- have exactly the same interface. Just use mock objects
- instead.
- No class SimpleTestOptions
- --------------------------
- This was replced by the shorter SimpleTest in 1.0.1beta1
- and is since deprecated.
- No file simple_test.php
- -----------------------
- This was renamed test_case.php in 1.0.1beta to more accurately
- reflect it's purpose. This file should never be directly
- included in test suites though, as it's part of the
- underlying mechanics and has a tendency to be refactored.
- No class WantedPatternExpectation
- ---------------------------------
- This was deprecated in 1.0.1alpha in favour of the simpler
- name PatternExpectation.
- No class NoUnwantedPatternExpectation
- -------------------------------------
- This was deprecated in 1.0.1alpha in favour of the simpler
- name NoPatternExpectation.
- No method assertNoUnwantedPattern()
- -----------------------------------
- This has been renamed to assertNoPattern() in 1.0.1alpha and
- the old form is deprecated.
- No method assertWantedPattern()
- -------------------------------
- This has been renamed to assertPattern() in 1.0.1alpha and
- the old form is deprecated.
- No method assertExpectation()
- -----------------------------
- This was renamed as assert() in 1.0.1alpha and the old form
- has been deprecated.
- No class WildcardExpectation
- ----------------------------
- This was a mostly internal class for the mock objects. It was
- renamed AnythingExpectation to bring it closer to JMock and
- NMock in version 1.0.1alpha.
- Missing UnitTestCase::assertErrorPattern()
- ------------------------------------------
- This method is deprecated for version 1.0.1 onwards.
- This method has been subsumed by assertError() that can now
- take an expectation. Simply pass a PatternExpectation
- into assertError() to simulate the old behaviour.
- No HTML when matching page elements
- -----------------------------------
- This behaviour has been switched to using plain text as if it
- were seen by the user of the browser. This means that HTML tags
- are suppressed, entities are converted and whitespace is
- normalised. This should make it easier to match items in forms.
- Also images are replaced with their "alt" text so that they
- can be matched as well.
- No method SimpleRunner::_getTestCase()
- --------------------------------------
- This was made public as getTestCase() in 1.0RC2.
- No method restartSession()
- --------------------------
- This was renamed to restart() in the WebTestCase, SimpleBrowser
- and the underlying SimpleUserAgent in 1.0RC2. Because it was
- undocumented anyway, no attempt was made at backward
- compatibility.
- My custom test case ignored by tally()
- --------------------------------------
- The _assertTrue method has had it's signature changed due to a bug
- in the PHP 5.0.1 release. You must now use getTest() from within
- that method to get the test case. Mock compatibility with other
- unit testers is now deprecated as of 1.0.1alpha as PEAR::PHPUnit2
- should soon have mock support of it's own.
- Broken code extending SimpleRunner
- ----------------------------------
- This was replaced with SimpleScorer so that I could use the runner
- name in another class. This happened in RC1 development and there
- is no easy backward compatibility fix. The solution is simply to
- extend SimpleScorer instead.
- Missing method getBaseCookieValue()
- -----------------------------------
- This was renamed getCurrentCookieValue() in RC1.
- Missing files from the SimpleTest suite
- ---------------------------------------
- Versions of SimpleTest prior to Beta6 required a SIMPLE_TEST constant
- to point at the SimpleTest folder location before any of the toolset
- was loaded. This is no longer documented as it is now unnecessary
- for later versions. If you are using an earlier version you may
- need this constant. Consult the documentation that was bundled with
- the release that you are using or upgrade to Beta6 or later.
- No method SimpleBrowser::getCurrentUrl()
- --------------------------------------
- This is replaced with the more versatile showRequest() for
- debugging. It only existed in this context for version Beta5.
- Later versions will have SimpleBrowser::getHistory() for tracking
- paths through pages. It is renamed as getUrl() since 1.0RC1.
- No method Stub::setStubBaseClass()
- ----------------------------------
- This method has finally been removed in 1.0RC1. Use
- SimpleTestOptions::setStubBaseClass() instead.
- No class CommandLineReporter
- ----------------------------
- This was renamed to TextReporter in Beta3 and the deprecated version
- was removed in 1.0RC1.
- No method requireReturn()
- -------------------------
- This was deprecated in Beta3 and is now removed.
- No method expectCookie()
- ------------------------
- This method was abruptly removed in Beta4 so as to simplify the internals
- until another mechanism can replace it. As a workaround it is necessary
- to assert that the cookie has changed by setting it before the page
- fetch and then assert the desired value.
- No method clickSubmitByFormId()
- -------------------------------
- This method had an incorrect name as no button was involved. It was
- renamed to submitByFormId() in Beta4 and the old version deprecated.
- Now removed.
- No method paintStart() or paintEnd()
- ------------------------------------
- You should only get this error if you have subclassed the lower level
- reporting and test runner machinery. These methods have been broken
- down into events for test methods, events for test cases and events
- for group tests. The new methods are...
- paintStart() --> paintMethodStart(), paintCaseStart(), paintGroupStart()
- paintEnd() --> paintMethodEnd(), paintCaseEnd(), paintGroupEnd()
- This change was made in Beta3, ironically to make it easier to subclass
- the inner machinery. Simply duplicating the code you had in the previous
- methods should provide a temporary fix.
- No class TestDisplay
- --------------------
- This has been folded into SimpleReporter in Beta3 and is now deprecated.
- It was removed in RC1.
- No method WebTestCase::fetch()
- ------------------------------
- This was renamed get() in Alpha8. It is removed in Beta3.
- No method submit()
- ------------------
- This has been renamed clickSubmit() in Beta1. The old method was
- removed in Beta2.
- No method clearHistory()
- ------------------------
- This method is deprecated in Beta2 and removed in RC1.
- No method getCallCount()
- ------------------------
- This method has been deprecated since Beta1 and has now been
- removed. There are now more ways to set expectations on counts
- and so this method should be unecessery. Removed in RC1.
- Cannot find file *
- ------------------
- The following public name changes have occoured...
- simple_html_test.php --> reporter.php
- simple_mock.php --> mock_objects.php
- simple_unit.php --> unit_tester.php
- simple_web.php --> web_tester.php
- The old names were deprecated in Alpha8 and removed in Beta1.
- No method attachObserver()
- --------------------------
- Prior to the Alpha8 release the old internal observer pattern was
- gutted and replaced with a visitor. This is to trade flexibility of
- test case expansion against the ease of writing user interfaces.
- Code such as...
- $test = &new MyTestCase();
- $test->attachObserver(new TestHtmlDisplay());
- $test->run();
- ...should be rewritten as...
- $test = &new MyTestCase();
- $test->run(new HtmlReporter());
- If you previously attached multiple observers then the workaround
- is to run the tests twice, once with each, until they can be combined.
- For one observer the old method is simulated in Alpha 8, but is
- removed in Beta1.
- No class TestHtmlDisplay
- ------------------------
- This class has been renamed to HtmlReporter in Alpha8. It is supported,
- but deprecated in Beta1 and removed in Beta2. If you have subclassed
- the display for your own design, then you will have to extend this
- class (HtmlReporter) instead.
- If you have accessed the event queue by overriding the notify() method
- then I am afraid you are in big trouble :(. The reporter is now
- carried around the test suite by the runner classes and the methods
- called directly. In the unlikely event that this is a problem and
- you don't want to upgrade the test tool then simplest is to write your
- own runner class and invoke the tests with...
- $test->accept(new MyRunner(new MyReporter()));
- ...rather than the run method. This should be easier to extend
- anyway and gives much more control. Even this method is overhauled
- in Beta3 where the runner class can be set within the test case. Really
- the best thing to do is to upgrade to this version as whatever you were
- trying to achieve before should now be very much easier.
- Missing set options method
- --------------------------
- All test suite options are now in one class called SimpleTestOptions.
- This means that options are set differently...
- GroupTest::ignore() --> SimpleTestOptions::ignore()
- Mock::setMockBaseClass() --> SimpleTestOptions::setMockBaseClass()
- These changed in Alpha8 and the old versions are now removed in RC1.
- No method setExpected*()
- ------------------------
- The mock expectations changed their names in Alpha4 and the old names
- ceased to be supported in Alpha8. The changes are...
- setExpectedArguments() --> expectArguments()
- setExpectedArgumentsSequence() --> expectArgumentsAt()
- setExpectedCallCount() --> expectCallCount()
- setMaximumCallCount() --> expectMaximumCallCount()
- The parameters remained the same.
|