不是一个具有所有静态成员/方法的类是一种单例设计模式吗?有这样的课程有什么不利之处吗?详细解释会有所帮助.
我正在尝试为这里的方法解密编写测试用例。
private static Codec codec;
static {
try {
codec = new Codec(encryptionType, encryptionKey, false, true, false);
} catch (CodecException e) {
throw new RuntimeException("Codec initialisation failed", e);
}
}
public static String decrypt(final String toDecrypt) throws CodecException {
String decrypted = codec.decryptFromBase64(toDecrypt);
if (decrypted.endsWith(":")) {
decrypted = decrypted.substring(0, decrypted.length() - 1);
}
return decrypted;
}
Run Code Online (Sandbox Code Playgroud)
测试用例:
@Mock
private Codec codec;
@Test
public void test_decrypt_Success() throws CodecException {
when(codec.decryptFromBase64(TestConstants.toDecrypt)).thenReturn(TestConstants.decrypted);
assertEquals(DocumentUtils.decrypt(TestConstants.toDecrypt), TestConstants.decrypted);
}
Run Code Online (Sandbox Code Playgroud)
由于这是一个静态方法,我无法在测试套件中注入类的实例并模拟其编解码器。上面的代码按预期在 assert 处从编解码器库中抛出错误。
您测试此类静态方法的方法是什么?或者我根本不应该为此编写测试?
在我的应用程序中,我有一个自定义User类,它包含一些常规数据(名称等...).我需要保存该对象并随时随地在应用程序的其他页面中获取它.我public final class GeneralMethods用很多方法制作了一个助手类,我经常使用它(当然是静态的).
为了使用Gson库保存数据Im .我做了这个方法:
public static void saveData(Context con, String variable, String data)
{
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(con);
prefs.edit().putString(variable, data).apply();
}
Run Code Online (Sandbox Code Playgroud)
要保存对象,我使用此方法如下:
Gson gson = new Gson();
String stringUser = gson.toJson(newUser);
GeneralMethods.saveData(VerificationActivity.this,"userObject",stringUser);
Run Code Online (Sandbox Code Playgroud)
要重新加载数据,我正在使用这个静态方法:
public static String getData(Context con, String variable, String defaultValue)
{
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(con);
String data = prefs.getString(variable, defaultValue);
return data;
}
Run Code Online (Sandbox Code Playgroud)
我真的不知道如何获取数据,这是我到目前为止所做的:
Gson gson = new Gson();
String user="";
String value="";
user = GeneralMethods.getData(SplashScreenActivity.this,value,"userObject");
Run Code Online (Sandbox Code Playgroud)
我正在努力解决这个问题getData,如何解析数据从String …
任何人都可以清楚地解释一下java singleton设计模式类vs java final类.我们可以使用final类而不是使用singleton类,对于final类,我们可以创建类的实例并使用其中的方法,但不覆盖属性,如果该方法在final类中是静态的,我们可以像ClassName一样调用方法.getMethod,为什么我们选择单身而不是最后一堂课.