相关疑难解决方法(0)

静态类和单例

不是一个具有所有静态成员/方法的类是一种单例设计模式吗?有这样的课程有什么不利之处吗?详细解释会有所帮助.

c++ singleton static design-patterns monostate

12
推荐指数
2
解决办法
6939
查看次数

单元测试静态方法

我正在尝试为这里的方法解密编写测试用例。

    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 处从编解码器库中抛出错误。

您测试此类静态方法的方法是什么?或者我根本不应该为此编写测试?

java testing static unit-testing mockito

7
推荐指数
1
解决办法
2万
查看次数

Android - 将Object保存到SharedPreferences并在应用程序中的任何位置获取它

在我的应用程序中,我有一个自定义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 android gson sharedpreferences

3
推荐指数
1
解决办法
2万
查看次数

java singleton class vs final class

任何人都可以清楚地解释一下java singleton设计模式类vs java final类.我们可以使用final类而不是使用singleton类,对于final类,我们可以创建类的实例并使用其中的方法,但不覆盖属性,如果该方法在final类中是静态的,我们可以像ClassName一样调用方法.getMethod,为什么我们选择单身而不是最后一堂课.

java design-patterns

3
推荐指数
1
解决办法
3410
查看次数