Proceedings of the 1st Workshop on Testing Object-Oriented Systems 2010
DOI: 10.1145/1890692.1890695
|View full text |Cite
|
Sign up to set email alerts
|

Testing object-oriented programs using dynamic aspects and non-determinism

Abstract: The implementation of unit tests with mock objects and stubs often involves substantial manual work. Stubbed methods return simple default values, therefore variations of these values require separate test cases. The integration of mock objects often requires more infrastructure code and design decisions exposing private data. We present an approach that both improves the expressiveness of test cases using non-deterministic choice and reduces design modifications using dynamic aspect-oriented programming techn… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1
1

Citation Types

0
5
0

Year Published

2010
2010
2013
2013

Publication Types

Select...
1
1

Relationship

1
1

Authors

Journals

citations
Cited by 2 publications
(5 citation statements)
references
References 13 publications
0
5
0
Order By: Relevance
“…These frameworks make traditional stub-based mock objects easier to create, while our work focuses on making mock objects more expressive and declarative. Ostermann incorporates nondeterministic choice to make mock objects more expressive [29]; declarative mocking naturally supports nondeterminism as well as additional expressiveness.…”
Section: Mock Objectsmentioning
confidence: 99%
“…These frameworks make traditional stub-based mock objects easier to create, while our work focuses on making mock objects more expressive and declarative. Ostermann incorporates nondeterministic choice to make mock objects more expressive [29]; declarative mocking naturally supports nondeterminism as well as additional expressiveness.…”
Section: Mock Objectsmentioning
confidence: 99%
“…Toledo et al also deploy security aspects in the dynamic scope of application objects [23]. In earlier work, we used deployment on a block of code like in CaesarJ [4] to separate design changing aspects used in different test cases [2]. Deployment on a block is particularly powerful in combination with expressive aspect scoping [21].…”
Section: Aspect Deploymentmentioning
confidence: 99%
“…Instead of one global environment, an environment stack is initialized at (5) and maintained with the callback methods at (6). The deployment method at (7) takes an aspect, a (yet unused) scoping strategy and class PerObject < AspectLanguage def initialize (1) @objects = ObjMan.new(:env) end def weaving jp (2) if objects.augmented? (jp.target) env = objects.get data(jp.target) env.iterate aspects{ |a| ... } end end end def deploy on object, a (3) env = AspectEnvironment.new env.add a LANG.objects.augment(object) LANG.objects.set data(object, env) end # Example: (4) (8) deploy tracing do sign(5) end an anonymous block as arguments.…”
Section: Deploymentmentioning
confidence: 99%
See 2 more Smart Citations