Performance: Test lifecycle hooks (before, after)
MEDIUM IMPACT
This concept affects test execution speed and resource usage during automated testing.
describe('My tests', () => { before(() => { // setup once before all tests initializeDatabaseConnection(); }); after(() => { // cleanup once after all tests closeDatabaseConnection(); }); it('test 1', () => { // test code }); it('test 2', () => { // test code }); });
describe('My tests', () => { beforeEach(() => { // expensive setup repeated before every test initializeDatabaseConnection(); }); afterEach(() => { // cleanup repeated after every test closeDatabaseConnection(); }); it('test 1', () => { // test code }); it('test 2', () => { // test code }); });
| Pattern | Setup Calls | Teardown Calls | Total Test Time Impact | Verdict |
|---|---|---|---|---|
| beforeEach/afterEach for all tests | N (number of tests) | N (number of tests) | High - setup/teardown repeated for each test | [X] Bad |
| before/after once per suite | 1 | 1 | Low - setup/teardown done once | [OK] Good |