It depends.
Performance
If you want to evaluate performance differences between two abstract options as you have here; the best way is to exaggerate the scale of everything. For example, assume that SomeObject takes an inordinate amount of time to instantiate (say, 600 seconds), and that you're planning on calling method() a lot (because performance issues are often not realized until projects scale).
Well it's obvious: option 1 will "perform" better over multiple method() calls, since option 2 results in a gigantic operation each time you want to call method. (Yes, as a rough performance test you can run each option through a for loop and compare the elapsed time, but it should be easy to see: all else being the same, creating an object n times is going to take more time than creating an object once).
But performance in itself in the exaggerated example is not necessarily a reason to favor option 1 in all cases.
Architecture
Option 2
It really comes down to the architecture of SomeObject. What is SomeObject? It could be that SomeObject is an object you cannot keep open for the lifetime of A; for example, it could be some kind of stream reader that locks down a resource while it is reading from the stream. In this case you might not want to have SomeObject "open" all the time blocking that resource; it should be disposed at the end of the method() call.
Option 1
Well, but perhaps SomeObject is something like a Service or Facade that exposes business logic. As you alluded to in your question it is "better for testing", and the full answer to that is, yes, it gives an easier hook for dependency injection, which is a key component to unit testing. (Although, typically it would be rewritten as private SomeObject a;, with a constructor like public a (SomeObject a) { this.a = a; } to follow the dependency injection / inversion of control paradigm. However, the end result is the same for the purpose of this question.)
In the case of a (well-designed) Service or utility function, you'd expect that it would handle object disposal itself (privately). The more utilized pattern in this case would be option 1, since it gives you one place to manage the dependency instead of within every method that uses it.
Your choice
Knowing the above should be enough to make an informed decision.
- Option 1 - Services, Facades, utilities, etc.
- Option 2 - Objects needing to be disposed; objects that implement
Closable, like StreamReader, FileWriter, etc.