gpt4 book ai didi

IDE之外的Java连续测试

转载 作者:行者123 更新时间:2023-11-30 11:20:55 26 4
gpt4 key购买 nike

我有一堆 Java 单元测试,我想将一个持续测试框架集成到我的代码库中。理想情况下,我想编写一个 Maven/Ant 目标或 bash 脚本,只要它正在监视的文件发生变化,它们就会开始运行测试。到目前为止,我已经查看了几个选项(Infinitest、JUnit Max),但它们似乎都想作为 IDE 插件运行。

我使用仅 CLI 工具的动机是我的同事使用大量的文本编辑器和 IDE,但我想确保任何人都可以持续运行测试。

编辑:出于以下几个原因,我没有考虑 Jenkins 或其他更典型的 CI 解决方案:

  • 我们已经有了一个 CI 构建工具,用于在每次推送后运行单元和集成测试。
  • 它们隐藏了测试的运行时间(因为它们是异步运行的),允许测试在人们没有真正注意到的情况下变得越来越慢。
  • 他们通常只在您的存储库位于某个中央位置时才运行测试。我希望在编辑时运行单元测试,而不是在我已经将代码推送到某处之后运行。我越早运行测试,我就能越早修复我在编辑时犯的任何错误。我们的 JavaScript 团队非常喜欢一个类似的工具,它引用了 3 倍的速度来迭代单元测试开发。

最佳答案

我正在为此使用目录更改解决方案的连续轮询。 (通用代码:http://www.qualityontime.eu/articles/directory-watcher/groovy-poll-watcher/(匈牙利文,但源代码为英文))

用于编译基于 nanoc 的站点的定制解决方案。查看并根据您的需要进行定制。 (常规)

def job = {
String command = /java -jar jruby-nanoc2.jar -S nanoc compile/
println "Executing "+command
def proc = command.execute()
proc.waitForProcessOutput(System.out, System.err)
}

params = [
closure: job,
sleepInterval: 1000,
dirPath: /R:\java\dev\eclipse_workspaces\project\help\content/
]

import groovy.transform.Canonical;

@Canonical
class AutoRunner{
def closure
def sleepInterval = 3000
// running for 8 hours then stop automatically if checking every 3 seconds
def nrOfRepeat = 9600
def dirPath = "."
long lastModified = 0

def autorun(){
println "Press CTRL+C to stop..."
println this
def to_run = {
while(nrOfRepeat--){
sleep(sleepInterval)
if(anyChange()){
closure()
}
}
} as Runnable
Thread runner = new Thread(to_run)
runner.start()
}

def boolean anyChange(){
def max = lastModified
new File(dirPath).eachFileRecurse {
if(it.name.endsWith('txt') && it.lastModified() > max){
max = it.lastModified()
}
}
if(max > lastModified){
lastModified = max
return true
}
return false;
}
}

new AutoRunner(params).autorun()

关于IDE之外的Java连续测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22503558/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com