public void SetUp() { localField = new LocalField(instance, field); localFinalField = new LocalField(instance, finalField); localStaticFinalField = new LocalField(null, finalStaticField); method = new MethodInfo(classInfo, "method", 0, "()V", null, null, null, Visibility.NULL, cost1, null, false); visitor = new TestabilityVisitor(repo, globalVariables, null, new RegExpWhiteList()); frame = visitor.createFrame(method, 1); parentFrame = frame.getParentFrame(); }
/** * Computing the MethodCost for a MethodInfo involves tallying up: * <ul><li>The cost in any static initialization blocks of the class which holds the method.</li> * <li>The cost of constructing the object.</li> * <li>Recognizing injectability through setter methods. This in most cases improves the score * unless you have lots of code in your setter.</li> * <li>The field costs</li> * <li>Lastly the costs are added up for all of the lines in this method. This includes the * transitive non-mockable/interceptable closure of all the costs of the methods that are called.</li> * <li></li></ul> * * @param method to compute the cost for. * @return MethodCost for this method, including the accumulated costs the methods it calls. This * MethodCost is guaranteed to have already been linked (sealed for adding additional costs). */ public MethodCost compute(MethodInfo method) { var visitor = new TestabilityVisitor(classRepository, new VariableState(), err, whitelist); TestabilityVisitor.CostRecordingFrame frame = visitor.createFrame(method, recordingDepth); addStaticInitializationCost(method, frame); if (!method.IsStatic() && !method.IsConstructor()) { addConstructorCost(method, frame); addSetterInjection(method, frame); } addFieldCost(method, frame); return frame.applyMethodOperations(); }