从Java运行Unix命令非常简单.
Runtime.getRuntime().exec(myCommand);
Run Code Online (Sandbox Code Playgroud)
但是可以从Java代码运行Unix shell脚本吗?如果是,从Java代码中运行shell脚本是一个好习惯吗?
当我会用std::istringstream,std::ostringstream以及std::stringstream为什么不应该我只是用std::stringstream在所有情况(是否有任何的运行时性能问题?).
最后,这有什么不好的(而不是使用流):
std::string stHehe("Hello ");
stHehe += "stackoverflow.com";
stHehe += "!";
Run Code Online (Sandbox Code Playgroud) 如果我有这样的枚举:
public enum Letter {
A,
B,
C,
//...
}
Run Code Online (Sandbox Code Playgroud)
随机选择一个的最佳方法是什么?它不需要是生产质量的防弹,但相当均匀的分布将是不错的.
我可以做这样的事情
private Letter randomLetter() {
int pick = new Random().nextInt(Letter.values().length);
return Letter.values()[pick];
}
Run Code Online (Sandbox Code Playgroud)
但有更好的方法吗?我觉得这是以前已经解决的问题.
我通常将工作项目放在桌面上的文件夹中.完成后我只需将它们移动到c:\dev\.问题是我是以一种相当古老的方式做到这一点.
1. move project files
2. delete project on Eclipse
3. create new project on Eclipse on the new location
Run Code Online (Sandbox Code Playgroud)
你们如何移动项目?
如果我可以改变:文件 - >属性 - >资源 - >位置路径,它将变得简单!
示例移动:
c:\user\desktop\project_123
c:\dev\project_123
Run Code Online (Sandbox Code Playgroud) 我试着在Java 8流API中找到一种简单的方法来进行分组,我用这种复杂的方式出来了!
List<String> list = new ArrayList<>();
list.add("Hello");
list.add("Hello");
list.add("World");
Map<String, List<String>> collect = list.stream().collect(
Collectors.groupingBy(o -> o));
System.out.println(collect);
List<String[]> collect2 = collect
.entrySet()
.stream()
.map(e -> new String[] { e.getKey(),
String.valueOf(e.getValue().size()) })
.collect(Collectors.toList());
collect2.forEach(o -> System.out.println(o[0] + " >> " + o[1]));
Run Code Online (Sandbox Code Playgroud)
我很感激你的意见.
我们需要能够在某些环境中跳过子模块.
有问题的模块包含集成测试,需要半小时才能运行.因此我们希望在构建CI服务器时包含它,但是当开发人员在本地构建(并且测试运行)时,我们希望跳过该模块.
有没有办法在配置文件设置中执行此操作?我已经做了一些谷歌搜索,并在这里查看其他问题/答案,并没有找到一个很好的解决方案.
我想一个选项是pom.xml完全从父项中删除该子模块,只需在我们的CI服务器上添加另一个项目来构建该模块.
建议?
null和""(空字符串)有什么区别?
我写了一些简单的代码:
String a = "";
String b = null;
System.out.println(a == b); // false
System.out.println(a.equals(b)); // false
Run Code Online (Sandbox Code Playgroud)
这两个语句返回false.看来,我无法找到它们之间的实际区别.
我刚刚开始使用Git,我在不同的分支之间真的很困惑.任何人都可以帮我弄清楚以下分支类型是什么?
他们之间有什么区别?他们如何相互合作?
我想,快速演示代码将非常有用.
我有一个Maven构建,我使用SureFire插件来运行一些单元测试,而FailSafe插件则运行一些集成测试.我想要一种方法来运行FailSafe插件的测试.
对于我来说,在pom中添加不同的配置文件或任何东西并不是一个好的解决方案,因为它是一个多模块构建,我不想编辑每个模块的pom.
有skip.tests和maven.test.skip和skipTests它停止所有的测试,以及skipITs,其仅停止故障安全插件.
那么,Maven是否有一个命令行标志skipITs,而是具有"onlyITs"的功能?
integration-testing build maven maven-surefire-plugin maven-failsafe-plugin
我正在编写一个组件,给定一个ZIP文件,需要:
我想对这个组件进行单元测试.
我很想编写直接处理文件系统的代码:
void DoIt()
{
Zip.Unzip(theZipFile, "C:\\foo\\Unzipped");
System.IO.File myDll = File.Open("C:\\foo\\Unzipped\\SuperSecret.bar");
myDll.InvokeSomeSpecialMethod();
}
Run Code Online (Sandbox Code Playgroud)
但人们经常说,"不要编写依赖于文件系统,数据库,网络等的单元测试".
如果我以单元测试友好的方式写这个,我想它看起来像这样:
void DoIt(IZipper zipper, IFileSystem fileSystem, IDllRunner runner)
{
string path = zipper.Unzip(theZipFile);
IFakeFile file = fileSystem.Open(path);
runner.Run(file);
}
Run Code Online (Sandbox Code Playgroud)
好极了!现在它是可测试的; 我可以将测试双打(模拟)提供给DoIt方法.但是以什么代价?我现在必须定义3个新接口才能使这个可测试.究竟,我在测试什么?我正在测试我的DoIt函数是否正确地与其依赖项交互.它不测试zip文件是否正确解压缩等.
我觉得我不再测试功能了.感觉就像我只是在测试课堂互动.
我的问题是:对依赖于文件系统的东西进行单元测试的正确方法是什么?
编辑我正在使用.NET,但这个概念也可以应用Java或本机代码.
java ×4
maven ×2
string ×2
build ×1
c++ ×1
dependencies ×1
eclipse ×1
eclipse-pdt ×1
enums ×1
equals ×1
git ×1
git-branch ×1
git-remote ×1
java-8 ×1
jenkins ×1
null ×1
random ×1
shell ×1
stringstream ×1
unit-testing ×1
unix ×1