SlideShare a Scribd company logo
1 of 6
Download to read offline
Where is it?
•  VisualWorks 7.7.1 (and ObjectStudio and WebVelocity)
•  VASmalltalk 8.0.2
•  Pharo 1.1
•  GemStone
•  Dolphin 6.1
•  Smalltalk/X
•  VSE port in progress
Thanks to James Foster, Tim MacKinnon, Jan Vrany, Leandro and Valeria, Yuri Mironenko , ...



         Anywhere else it should be?
                   (and if so, will you port it?)

                                                                                 ESUG – 16sep2010 - 1
Cross-dialect Compatibility
Pharo
•  Pure SUnit 4.0 in www.squeaksource.com/SUnit
•  SUnit 4.0 + Pharo in www.squeaksource.com/PharoInbox
 —  (#cleanUpInstanceVariables not called by default in the basic merge)

Smalltalk/X:
•  pure SUnit 4.0 version
•  4.0 + unintrusive tweak to capture last result of test run

Other dialects: pure SUnit 4.0 (VSE in progress)

        Please merge 4.0 diff: 3.1 into whatever you use

                                                                  ESUG – 16sep2010 - 2
What’s new: TestResource
Resource-processing is ordered
 —  a test’s resources setUp in order and tearDown in reverse order
 —  a resource sets up before and tears down after everything that uses it
 —  tearDown ensured if setUp entered (like TestCase)

Resources understand #assert:… protocol
 —  easy to refactor between MyTest>>setUp and MyResource>>setUp

Resources are made available just-in-time:
 —  first using test sets it up; later tests see it has (or failed to) set up
 —  MyResource>>setUp called by framework, not by MyResource>>new

Using TestResources trades test isolation for performance
 —  TestCase>>setUp, testSomething, tearDown                  ) similar functions,
 —  TestResource>>setUp, isAvailable, tearDown                ) different epochs

                                                                           ESUG – 16sep2010 - 3
What’s new: Pluggable Exceptions
runCase: dispatches on the exception
 —  TestFailure adds failure, Error adds error
 —  create subclasses to plugin specialised behaviour
 —  (see #sunitAnnounce:toResult: )


Trivial improvements
 —  better-integrated calling of #shouldInheritSelectors, #isAbstract
    –  new method #lookUpHierarchyRoot for rare inheritance cases
 —  pluggability tweaks, e.g. self addPass: … instead of passed add: …,
    –  (more can be done to improve pluggability)
 —  failing resource logs the calling test
    –  (more logging improvements needed !)
 —  TestAsserter: superclass for any delegate classes a test needs


                                                                     ESUG – 16sep2010 - 4
Future: SUnit 4.1 can exploit ANSI
Time to retire a lot of compatibility methods?
 —  #sunitSelectors
 —  #sunitOn:do:
 —  #sunitEnsure:
 —  #sunitName
 —  #sunitAsSymbol

and a class?
 —  who uses SUnitDelay?

and maybe some more?
 —  #sunitMatch:
 —  #sunitAddDependent:, #sunitRemoveDependent:



                                                  ESUG – 16sep2010 - 5
SUnit: core and friends
SUnit core: the Camp Smalltalk project
 —  robust cross-dialect test running
 —  compatibility base for SUnit variants in each dialect

SUnit variants
 —  aim: merge each release into dialect’s main variant
 —  pluggability improvements will let tweaks be moved out of core
    –  but new ideas may put new tweaks back in
           –  move out later … or move into project core
           –  (first make it run, then make it right)


                        SUnit welcomes ideas
SUnit will remain cross-dialect, backward-compatible, small

                                                                     ESUG – 16sep2010 - 6

More Related Content

Viewers also liked

Madeo - a CAD Tool for reconfigurable Hardware
Madeo - a CAD Tool for reconfigurable HardwareMadeo - a CAD Tool for reconfigurable Hardware
Madeo - a CAD Tool for reconfigurable HardwareESUG
 
Innovation Technology Awards
Innovation Technology AwardsInnovation Technology Awards
Innovation Technology AwardsESUG
 
Automatic Strategies for Decision Support in TriageTelephone
Automatic Strategies for Decision Support in TriageTelephone Automatic Strategies for Decision Support in TriageTelephone
Automatic Strategies for Decision Support in TriageTelephone ESUG
 
Object Graph Swapping
Object Graph SwappingObject Graph Swapping
Object Graph SwappingESUG
 
Resilient Smalltalk
Resilient SmalltalkResilient Smalltalk
Resilient SmalltalkESUG
 
CxStates
CxStatesCxStates
CxStatesESUG
 
Coordinated Testing with a Test-Server
Coordinated Testing with a Test-ServerCoordinated Testing with a Test-Server
Coordinated Testing with a Test-ServerESUG
 

Viewers also liked (7)

Madeo - a CAD Tool for reconfigurable Hardware
Madeo - a CAD Tool for reconfigurable HardwareMadeo - a CAD Tool for reconfigurable Hardware
Madeo - a CAD Tool for reconfigurable Hardware
 
Innovation Technology Awards
Innovation Technology AwardsInnovation Technology Awards
Innovation Technology Awards
 
Automatic Strategies for Decision Support in TriageTelephone
Automatic Strategies for Decision Support in TriageTelephone Automatic Strategies for Decision Support in TriageTelephone
Automatic Strategies for Decision Support in TriageTelephone
 
Object Graph Swapping
Object Graph SwappingObject Graph Swapping
Object Graph Swapping
 
Resilient Smalltalk
Resilient SmalltalkResilient Smalltalk
Resilient Smalltalk
 
CxStates
CxStatesCxStates
CxStates
 
Coordinated Testing with a Test-Server
Coordinated Testing with a Test-ServerCoordinated Testing with a Test-Server
Coordinated Testing with a Test-Server
 

Similar to SUnit 4.0

PuppetConf 2016: Enjoying the Journey from Puppet 3.x to 4.x – Rob Nelson, AT&T
PuppetConf 2016: Enjoying the Journey from Puppet 3.x to 4.x – Rob Nelson, AT&T PuppetConf 2016: Enjoying the Journey from Puppet 3.x to 4.x – Rob Nelson, AT&T
PuppetConf 2016: Enjoying the Journey from Puppet 3.x to 4.x – Rob Nelson, AT&T Puppet
 
Enjoying the Journey from Puppet 3.x to Puppet 4.x (PuppetConf 2016)
Enjoying the Journey from Puppet 3.x to Puppet 4.x (PuppetConf 2016)Enjoying the Journey from Puppet 3.x to Puppet 4.x (PuppetConf 2016)
Enjoying the Journey from Puppet 3.x to Puppet 4.x (PuppetConf 2016)Robert Nelson
 
Oh so you test? - A guide to testing on Android from Unit to Mutation
Oh so you test? - A guide to testing on Android from Unit to MutationOh so you test? - A guide to testing on Android from Unit to Mutation
Oh so you test? - A guide to testing on Android from Unit to MutationPaul Blundell
 
Saucery for Saucelabs
Saucery for SaucelabsSaucery for Saucelabs
Saucery for SaucelabsAndrew Gray
 
Scaling Puppet Usage to a Global Organization
Scaling Puppet Usage to a Global OrganizationScaling Puppet Usage to a Global Organization
Scaling Puppet Usage to a Global OrganizationPuppet
 
Planets, OPF & SCAPE - presentation of tools on digital preservation
Planets, OPF & SCAPE - presentation of tools on digital preservationPlanets, OPF & SCAPE - presentation of tools on digital preservation
Planets, OPF & SCAPE - presentation of tools on digital preservationSCAPE Project
 
ElasTest - Testing in the large
ElasTest - Testing in the largeElasTest - Testing in the large
ElasTest - Testing in the largeElasTest Project
 
New and improved: Coming changes to the unittest module
 	 New and improved: Coming changes to the unittest module 	 New and improved: Coming changes to the unittest module
New and improved: Coming changes to the unittest modulePyCon Italia
 
Riga Dev Day - Automated Android Continuous Integration
Riga Dev Day - Automated Android Continuous IntegrationRiga Dev Day - Automated Android Continuous Integration
Riga Dev Day - Automated Android Continuous IntegrationNicolas Fränkel
 
Developing IT infrastructures with Puppet
Developing IT infrastructures with PuppetDeveloping IT infrastructures with Puppet
Developing IT infrastructures with PuppetAlessandro Franceschi
 
Brno Perl Mongers 28.5.2015 - Perl family by mj41
Brno Perl Mongers 28.5.2015 - Perl family by mj41Brno Perl Mongers 28.5.2015 - Perl family by mj41
Brno Perl Mongers 28.5.2015 - Perl family by mj41Michal Jurosz
 
JS Lab`16. Сергей Селецкий: "Ретроспектива тестирования JavaScript"
JS Lab`16. Сергей Селецкий: "Ретроспектива тестирования JavaScript"JS Lab`16. Сергей Селецкий: "Ретроспектива тестирования JavaScript"
JS Lab`16. Сергей Селецкий: "Ретроспектива тестирования JavaScript"GeeksLab Odessa
 
Selenium_WebDriver_Training__@2012_-phil_coulson_
Selenium_WebDriver_Training__@2012_-phil_coulson_Selenium_WebDriver_Training__@2012_-phil_coulson_
Selenium_WebDriver_Training__@2012_-phil_coulson_Phil Coulson
 
Puppet modules: A Holistic Approach - Geneva
Puppet modules: A Holistic Approach - GenevaPuppet modules: A Holistic Approach - Geneva
Puppet modules: A Holistic Approach - GenevaAlessandro Franceschi
 
Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...
Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...
Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...Paul King
 

Similar to SUnit 4.0 (20)

PuppetConf 2016: Enjoying the Journey from Puppet 3.x to 4.x – Rob Nelson, AT&T
PuppetConf 2016: Enjoying the Journey from Puppet 3.x to 4.x – Rob Nelson, AT&T PuppetConf 2016: Enjoying the Journey from Puppet 3.x to 4.x – Rob Nelson, AT&T
PuppetConf 2016: Enjoying the Journey from Puppet 3.x to 4.x – Rob Nelson, AT&T
 
Enjoying the Journey from Puppet 3.x to Puppet 4.x (PuppetConf 2016)
Enjoying the Journey from Puppet 3.x to Puppet 4.x (PuppetConf 2016)Enjoying the Journey from Puppet 3.x to Puppet 4.x (PuppetConf 2016)
Enjoying the Journey from Puppet 3.x to Puppet 4.x (PuppetConf 2016)
 
Oh so you test? - A guide to testing on Android from Unit to Mutation
Oh so you test? - A guide to testing on Android from Unit to MutationOh so you test? - A guide to testing on Android from Unit to Mutation
Oh so you test? - A guide to testing on Android from Unit to Mutation
 
Saucery for Saucelabs
Saucery for SaucelabsSaucery for Saucelabs
Saucery for Saucelabs
 
Scaling Puppet Usage to a Global Organization
Scaling Puppet Usage to a Global OrganizationScaling Puppet Usage to a Global Organization
Scaling Puppet Usage to a Global Organization
 
Planets, OPF & SCAPE - presentation of tools on digital preservation
Planets, OPF & SCAPE - presentation of tools on digital preservationPlanets, OPF & SCAPE - presentation of tools on digital preservation
Planets, OPF & SCAPE - presentation of tools on digital preservation
 
Evolution in the large
Evolution in the largeEvolution in the large
Evolution in the large
 
ElasTest - Testing in the large
ElasTest - Testing in the largeElasTest - Testing in the large
ElasTest - Testing in the large
 
New and improved: Coming changes to the unittest module
 	 New and improved: Coming changes to the unittest module 	 New and improved: Coming changes to the unittest module
New and improved: Coming changes to the unittest module
 
700 Tons of Code Later
700 Tons of Code Later700 Tons of Code Later
700 Tons of Code Later
 
Testing with PostgreSQL
Testing with PostgreSQLTesting with PostgreSQL
Testing with PostgreSQL
 
Riga Dev Day - Automated Android Continuous Integration
Riga Dev Day - Automated Android Continuous IntegrationRiga Dev Day - Automated Android Continuous Integration
Riga Dev Day - Automated Android Continuous Integration
 
Python & FUSE
Python & FUSEPython & FUSE
Python & FUSE
 
Developing IT infrastructures with Puppet
Developing IT infrastructures with PuppetDeveloping IT infrastructures with Puppet
Developing IT infrastructures with Puppet
 
Greach 2015 Spock workshop
Greach 2015 Spock workshopGreach 2015 Spock workshop
Greach 2015 Spock workshop
 
Brno Perl Mongers 28.5.2015 - Perl family by mj41
Brno Perl Mongers 28.5.2015 - Perl family by mj41Brno Perl Mongers 28.5.2015 - Perl family by mj41
Brno Perl Mongers 28.5.2015 - Perl family by mj41
 
JS Lab`16. Сергей Селецкий: "Ретроспектива тестирования JavaScript"
JS Lab`16. Сергей Селецкий: "Ретроспектива тестирования JavaScript"JS Lab`16. Сергей Селецкий: "Ретроспектива тестирования JavaScript"
JS Lab`16. Сергей Селецкий: "Ретроспектива тестирования JavaScript"
 
Selenium_WebDriver_Training__@2012_-phil_coulson_
Selenium_WebDriver_Training__@2012_-phil_coulson_Selenium_WebDriver_Training__@2012_-phil_coulson_
Selenium_WebDriver_Training__@2012_-phil_coulson_
 
Puppet modules: A Holistic Approach - Geneva
Puppet modules: A Holistic Approach - GenevaPuppet modules: A Holistic Approach - Geneva
Puppet modules: A Holistic Approach - Geneva
 
Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...
Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...
Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...
 

More from ESUG

Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingESUG
 
Technical documentation support in Pharo
Technical documentation support in PharoTechnical documentation support in Pharo
Technical documentation support in PharoESUG
 
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapESUG
 
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoSequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoESUG
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...ESUG
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsESUG
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6ESUG
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationESUG
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingESUG
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesESUG
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportESUG
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsESUG
 
Garbage Collector Tuning
Garbage Collector TuningGarbage Collector Tuning
Garbage Collector TuningESUG
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseESUG
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FutureESUG
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the DebuggerESUG
 
Websockets for Fencing Score
Websockets for Fencing ScoreWebsockets for Fencing Score
Websockets for Fencing ScoreESUG
 
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptESUG
 
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocESUG
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsESUG
 

More from ESUG (20)

Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programming
 
Technical documentation support in Pharo
Technical documentation support in PharoTechnical documentation support in Pharo
Technical documentation support in Pharo
 
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and Roadmap
 
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoSequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in Pharo
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early results
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test Generation
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic Programming
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience Report
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIs
 
Garbage Collector Tuning
Garbage Collector TuningGarbage Collector Tuning
Garbage Collector Tuning
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and Future
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the Debugger
 
Websockets for Fencing Score
Websockets for Fencing ScoreWebsockets for Fencing Score
Websockets for Fencing Score
 
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
 
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design Mooc
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and Transformations
 

SUnit 4.0

  • 1. Where is it? •  VisualWorks 7.7.1 (and ObjectStudio and WebVelocity) •  VASmalltalk 8.0.2 •  Pharo 1.1 •  GemStone •  Dolphin 6.1 •  Smalltalk/X •  VSE port in progress Thanks to James Foster, Tim MacKinnon, Jan Vrany, Leandro and Valeria, Yuri Mironenko , ... Anywhere else it should be? (and if so, will you port it?) ESUG – 16sep2010 - 1
  • 2. Cross-dialect Compatibility Pharo •  Pure SUnit 4.0 in www.squeaksource.com/SUnit •  SUnit 4.0 + Pharo in www.squeaksource.com/PharoInbox —  (#cleanUpInstanceVariables not called by default in the basic merge) Smalltalk/X: •  pure SUnit 4.0 version •  4.0 + unintrusive tweak to capture last result of test run Other dialects: pure SUnit 4.0 (VSE in progress) Please merge 4.0 diff: 3.1 into whatever you use ESUG – 16sep2010 - 2
  • 3. What’s new: TestResource Resource-processing is ordered —  a test’s resources setUp in order and tearDown in reverse order —  a resource sets up before and tears down after everything that uses it —  tearDown ensured if setUp entered (like TestCase) Resources understand #assert:… protocol —  easy to refactor between MyTest>>setUp and MyResource>>setUp Resources are made available just-in-time: —  first using test sets it up; later tests see it has (or failed to) set up —  MyResource>>setUp called by framework, not by MyResource>>new Using TestResources trades test isolation for performance —  TestCase>>setUp, testSomething, tearDown ) similar functions, —  TestResource>>setUp, isAvailable, tearDown ) different epochs ESUG – 16sep2010 - 3
  • 4. What’s new: Pluggable Exceptions runCase: dispatches on the exception —  TestFailure adds failure, Error adds error —  create subclasses to plugin specialised behaviour —  (see #sunitAnnounce:toResult: ) Trivial improvements —  better-integrated calling of #shouldInheritSelectors, #isAbstract –  new method #lookUpHierarchyRoot for rare inheritance cases —  pluggability tweaks, e.g. self addPass: … instead of passed add: …, –  (more can be done to improve pluggability) —  failing resource logs the calling test –  (more logging improvements needed !) —  TestAsserter: superclass for any delegate classes a test needs ESUG – 16sep2010 - 4
  • 5. Future: SUnit 4.1 can exploit ANSI Time to retire a lot of compatibility methods? —  #sunitSelectors —  #sunitOn:do: —  #sunitEnsure: —  #sunitName —  #sunitAsSymbol and a class? —  who uses SUnitDelay? and maybe some more? —  #sunitMatch: —  #sunitAddDependent:, #sunitRemoveDependent: ESUG – 16sep2010 - 5
  • 6. SUnit: core and friends SUnit core: the Camp Smalltalk project —  robust cross-dialect test running —  compatibility base for SUnit variants in each dialect SUnit variants —  aim: merge each release into dialect’s main variant —  pluggability improvements will let tweaks be moved out of core –  but new ideas may put new tweaks back in –  move out later … or move into project core –  (first make it run, then make it right) SUnit welcomes ideas SUnit will remain cross-dialect, backward-compatible, small ESUG – 16sep2010 - 6