我正在尝试制作一些测试类来测试我的项目中的缓存是否正常工作。最简单的方法是这样的:
MyCache cache = new MyCache(new MyDataSource());
MyResult = cache.load(somepath); //This calls some method MyDataSource.getData which is expensive
//Here the thing I need comes
Magic.cleanStackTrace(); //Prepare clean buffer for all called methods
//Call the cache load again
cache.load(somepath);
//Check if expensive MyDataSource.getData has been called
List<Method> methodsCalled = Magic.getAllFunctionsCalledAfterClean(); //Again, fictional finction
//Loop through lost and check if MyDataSource.getData is there or not
这将允许我确保所有内容都被缓存以及缓存被删除的时间。我还可以设想其他具有不同目的的测试 - 例如安全性,调试方法的清理等等。
这可能吗?在这种情况下,我认为超级肮脏的解决方案并不羞耻,因为它只是测试而且一切都是允许的。