4 个版本

0.2.2 2024年4月16日
0.1.2 2023年12月8日
0.1.1 2023年12月8日
0.1.0 2023年12月8日

#215 in 测试

MIT/Apache

67KB
1.5K SLoC

Rust Slim - Rust 的 Slim 服务器

为 rust 应用程序开发 Slim 适配器。基于 fitnesse 的 Slim 协议 fitnesse .

目前与 slim 协议不完全兼容。以下是一些已知未实现的功能

它只能处理字符串符号,不支持 SUT 特性。不支持 Actor。不支持使用 STOUD 和 STDIN 进行通信。

目前处于不稳定版本。通用 API 可能会在下一个版本中更改。

更多详情请参阅 文档


lib.rs:

(尚未完成) 的 SlimServer 实现,用于接受测试。

这是通过在此处找到的文档实现的 这里

要将它添加到您的项目中,只需运行

cargo add rust_slim -F macros --dev

然后您需要创建您的适配器。推荐的操作方法是使用 #[fixture] 宏。以下是一个示例

use rust_slim::fixture;

#[derive(Default)]
pub struct Calculator {
    a: i64,
    b: i64,
}

#[fixture]
impl Calculator {
    pub fn set_a(&mut self, a: i64) {
        self.a = a
    }

    pub fn set_b(&mut self, b: i64) {
        self.b = b
    }

    pub fn sum(&self) -> i64 {
        self.a + self.b
    }

    pub fn mul(&self) -> i64 {
        self.a * self.b
    }

    pub fn sub(&self) -> i64 {
        self.a - self.b
    }

    pub fn div(&self) -> i64 {
        self.a / self.b
    }
}

所有公开方法都将能够被 slim 服务器调用。

然后,我们需要添加一个 slim 服务器的入口点,以便我们可以运行它。有很多种方法可以做到这一点。一种是在项目中创建一个示例。

因此创建一个名为 calculator.rs 的示例文件,并添加以下内容

use rust_slim::SlimServer;
use std::net::TcpListener;
use anyhow::Result;
use std::env::args;

#
#
#
#
#
#
#
fn main() -> Result<()> {
    let port = args().skip(1).next().unwrap_or("8085".to_string());
    let listener = TcpListener::bind(format!("0.0.0.0:{port}").to_string()).expect("Error");
    let (stream, _) = listener.accept()?;
    let mut server = SlimServer::new(stream.try_clone()?, stream);
    server.add_fixture::<Calculator>();
    server.run()?;
    Ok(())
}

然后,要运行它,您只需调用 cargo run --example calculator。现在您需要配置您的测试运行器 (fitnesse, temoc) 以调用您的服务器

依赖项

~0.9–1.7MB
~30K SLoC