我目前正在开发一个使用autotools生成makefile的项目。像往常一样,这个makefile支持#import "ViewController.h"
@interface ViewController () <NSURLSessionDelegate, NSURLSessionDownloadDelegate>
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
NSURLSessionConfiguration *sessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *session = [NSURLSession sessionWithConfiguration:sessionConfiguration delegate:self delegateQueue:nil];
NSURLSessionDownloadTask *downloadTask = [session downloadTaskWithURL:[NSURL URLWithString:@"http://cdn.tutsplus.com/mobile/uploads/2013/12/sample.jpg"]];
[downloadTask resume];
}
- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location {
NSData *data = [NSData dataWithContentsOfURL:location];
dispatch_async(dispatch_get_main_queue(), ^{
[self.progressView setHidden:YES];
[self.imageView setImage:[UIImage imageWithData:data]];
});
}
- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didResumeAtOffset:(int64_t)fileOffset expectedTotalBytes:(int64_t)expectedTotalBytes {
}
- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didWriteData:(int64_t)bytesWritten totalBytesWritten:(int64_t)totalBytesWritten totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite {
float progress = (double)totalBytesWritten / (double)totalBytesExpectedToWrite;
dispatch_async(dispatch_get_main_queue(), ^{
[self.progressView setProgress:progress];
});
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
,以运行整个测试套件。但是,我正在研究该程序的一小部分,其中只有少数单元测试适用。是否可以使用make check
运行单个单元测试或选择单元测试而不是整个套件?
修改
Evan VanderZee suggests它取决于目录结构,所以让我解释一下目录结构。该项目的目录结构非常平坦。大多数源文件位于make check
目录中,其中一些文件分组在src/
下的子目录中。单元测试在src/
。没有源目录包含Makefile。顶层只有一个makefile(由configure生成)。
答案 0 :(得分:8)
如果您使用Automake的TESTS
变量列出make check
运行的测试,那么有一个简单的快捷方式:make check TESTS='name-of-test1 name-of-test2'
命令行上传递的TESTS
变量覆盖Makefile中的那个。
或者,export TESTS='names-of-tests'; make -e check
从环境中获取TESTS
的值。
如果您没有使用TESTS
而是使用check-local
或其他目标,那么这将不起作用。
答案 1 :(得分:1)
答案取决于您使用的特定makefile。如果测试具有目录结构,您通常可以导航到子目录并在子目录中运行make check
。
由于您后来解释说您的目录结构是扁平的,因此很难说没有实际看到一些makefile。如果您知道为要运行的特定测试创建的可执行文件的名称,则可以运行make name_of_test
来构建要运行的测试。这不会运行测试,它只会构建它。构建之后,测试可以驻留在测试目录中。在此之后,您可以进入测试目录并以运行可执行文件的典型方式运行测试,但如果测试依赖于库,您可能需要告诉测试在哪里找到这些库,可能通过添加一些库来LD_LIBRARY_PATH
。
如果您希望经常这样做,可能会修改makefile以支持运行您要运行的特定测试。通常,这会涉及编辑Makefile.am
或Makefile.in
,然后重新配置,但我还没有足够的信息来建议您需要进行哪些编辑。