1. A computer-executable method for testing a multi-threaded software application, comprising: in response to invocation of a mock object, identifying, by a computer, a thread which has invoked the mock object, the mock object being a routine that simulates functionalities of a real object in the multi-thread software application; determining that the identified thread is not associated to a tied actor, wherein the tied actor has a predefined role to the mock object; upon determining that the identified thread is not associated to the tied actor, determining whether a description of the identified thread matches a description associated with identifying information of an untied actor, wherein determining comprises checking untied actors for a match with the identified thread and associating a first matched untied actor with the identified thread; creating a first tied actor by tying the first matched untied actor to the identified thread; associating a role with the first tied actor; associating an expectation or a stub with the role; evaluating whether the expectation or the stub is properly executed based on a simulation of the mock object; and upon determining that the expectation or the stub is not properly executed and an error has occurred: guarding the error within the role; and terminating the identified thread.