Mixing Assert and Act in AAA unit testing syntax -
is ok mix assert , act steps? aaa more of guideline rule? or missing something?
here test:
[testmethod] public void cancelbuttonselected_dontcanceltwicethencancel_dialogcloses() {     // arrange     iaddaddressform form = substitute.for<iaddaddressform>();     // indicate when show cancelmessage called      //  should return cancel twice (saying want cancel cancel)     //  should return ok     form.showcancelmessage().returns(dialogresult.cancel,           dialogresult.cancel, dialogresult.ok);      addaddresscontroller controller = new addaddresscontroller(form);     addressitem item = testhelper.createaddressbob();      // act     enteraddressinfo(form, controller, item);     controller.cancelbuttonselected();     assert.istrue(form.dialogresult == dialogresult.none);      controller.cancelbuttonselected();     assert.istrue(form.dialogresult == dialogresult.none);      controller.cancelbuttonselected();      // assert     assert.istrue(form.dialogresult == dialogresult.cancel); }   so call method 3 times. after each call, want make sure did not cancel dialog. on third call, dialog should canceled.
is "legal" use of aaa syntax/styling?
aaa guideline make unit tests more readable. in example provided argue have not achieved goal.
i think following tests make scenario testing more readable.
[testmethod] public void cancelbuttonselected_shouldsetdialogresulttonone_whenfirstcancelbuttonisselected() {     // arrange     iaddaddressform form = arrangeformforcancelbuttonselectedtests();     addaddresscontroller controller = arrangecontrollerforcancelbuttonselectedtests();      // act     controller.cancelbuttonselected();      // assert     assert.istrue(form.dialogresult == dialogresult.none); }  [testmethod] public void cancelbuttonselected_shouldsetdialogresulttonone_whensecondcancelbuttonisselected() {     // arrange     iaddaddressform form = arrangeformforcancelbuttonselectedtests();     addaddresscontroller controller = arrangecontrollerforcancelbuttonselectedtests();      // act     controller.cancelbuttonselected();     controller.cancelbuttonselected();      // assert     assert.istrue(form.dialogresult == dialogresult.none);  }  [testmethod] public void cancelbuttonselected_shouldsetdialogresulttocancel_whenthirdcancelbuttonisselected() {     // arrange     iaddaddressform form = arrangeformforcancelbuttonselectedtests();     addaddresscontroller controller = arrangecontrollerforcancelbuttonselectedtests();      // act     controller.cancelbuttonselected();     controller.cancelbuttonselected();     controller.cancelbuttonselected();      // assert     assert.istrue(form.dialogresult == dialogresult.cancel); }      
Comments
Post a Comment