我们正在开发一个运行在各种平台上的应用程序(Windows,Windows RT,MacOSX,iOS,Android).
问题是如何以简单的方式管理不同平台上的不同本地化.不同平台上的语言文件有各种格式(一些是基于xml的,另一些是简单的键值对,其他是完全疯狂的格式,如MacOS)
我敢肯定,我们不是第一家遇到这个问题的公司,但是我找不到一个易于使用的解决方案,但却有可能拥有一个"数据源",其中字符串以不同的语言收集(最好的)将是翻译的用户界面)然后可以将其导出为不同平台的不同格式.
有没有人有这个问题的解决方案?
问候亚历山大
在我们的Spock测试中,我们想检查我们的软件中是否选择了正确的路径.但是我们不想测试被调用方法的功能(这是在单独的测试中完成的)
def "Test"() {
setup:
service.metaClass.innerMethod = { -> return null }
when:
service.doSomething("notexisting@test.com")
then:
1 * service.innerMethod(*_)
}
Run Code Online (Sandbox Code Playgroud)
此测试总是失败,因为innerMethod调用了代码并且对方法调用的调用进行了innerMethod计数而不是方法的调用innerMethod
| Too few invocations for:
1 * service.innerMethod(*_) (0 invocations)
Unmatched invocations (ordered by similarity):
1 * secondService.doSomething()
Run Code Online (Sandbox Code Playgroud)
我怎样才能获得innerMethod的调用并模拟完整的函数?
我有一个奇怪的问题。我的应用程序应该链接到 Dropbox 并且应该能够上传/下载文件。我有一个名为“连接到 Dropbox”的按钮。按下此按钮后,应用程序应链接到 Dropbox。
- (IBAction)btnLoginClick:(id)sender {
[[DBSession sharedSession] linkFromController:self];
}
Run Code Online (Sandbox Code Playgroud)
当调用此操作时,一切正常。Dropbox.app 已加载并请求权限等。
如果我将函数更改为如下所示:
- (IBAction)btnLoginClick:(id)sender {
[[appDelegate getDropboxService] link:self];
}
Run Code Online (Sandbox Code Playgroud)
然后 Dropbox.app 将打开并请求许可,但该应用程序未链接到 Dropbox。
我收到以下错误:
[WARNING] DropboxSDK: error making request to /1/metadata/dropbox - Token is invalid.
Run Code Online (Sandbox Code Playgroud)
appDelegate 中的函数仅返回 Dropbox 对象,或者如果它为零,则会创建它。Link 函数只调用与第一个代码块中相同的行。
[[DBSession sharedSession] linkFromController:self];
Run Code Online (Sandbox Code Playgroud)
我不知道为什么会发生这种情况,也不知道我做错了什么。
问候亚历克斯
我有一个长期运行的服务方法,我从控制器的休息调用开始.
服务:
@Service
public class TestServiceImpl implements TestService {
@Override
public void doSomething() {
System.out.println("1: " + DateTime.now());
runLongTask();
System.out.println("2: " + DateTime.now());
}
@Async
private runLongTask() {
System.out.println("Test");
Thread.sleep(10000);
System.out.println("3: "+ DateTime.now());
}
}
Run Code Online (Sandbox Code Playgroud)
在我的Application.java中我有
private int poolSize = 10;
private int queueCapacity = 10;
@Bean(name="taskExecutor")
public TaskExecutor taskExecutor() {
ThreadPoolTaskExecutor taskExecutor = new ThreadPoolTaskExecutor();
taskExecutor.setMaxPoolSize(this.poolSize);
taskExecutor.setQueueCapacity(this.queueCapacity);
taskExecutor.afterPropertiesSet();
return new ThreadPoolTaskExecutor();
}
Run Code Online (Sandbox Code Playgroud)
当然,我的Application.java类中有@EnableAsync Annotation
所以我希望输出是这样的:
1: 2015-10-23 11:20:00
2: 2015-10-23 11:20:01
Test
3: 2015-10-23 11:20:11
Run Code Online (Sandbox Code Playgroud) asynchronous ×1
dropbox ×1
grails ×1
ios ×1
localization ×1
objective-c ×1
spock ×1
spring ×1
spring-boot ×1
testing ×1